版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象编程思想编程思想:面向过程,面向对象例子:学生报到系统1、 学生报到2、 学校登记3、 学生缴费4、 学校收费5、 学生选择班级6、 班级录入信息分析:实现这样业务逻辑。将系统拆分成每一个步骤进行操作。将每一个功能,封装成函数。逐一去调用函数即可。分析:报到系统是如何实现的?是将一个完整的业务逻辑,拆分一个一个的步骤,然后在满足学需求的时候,去逐一调函一个函数。逐一实现每一个过程。想这样的编程方式,面向过程的编程方式。动词罗列,动词的集合体。发现:程序的最终的目的,用于去模拟出现实中的业务逻辑。现实生活中的业务逻辑,所有的动作。都是由一个主体发出的。但是在使用面向过程的时候,没有主体的
2、存在。使用程序就无法去完成模拟出现实中的业务逻辑。导致:如果在使用程序去完成模拟出现实生活中的业务逻辑。程序的世界,也需要一个主体的存在。并且所有的工作,都需要由这个主体去发出。将这样的编程思想称为面向对象(现实生活中的主体)模拟现实世界和程序世界面向过程:只存在着动作,没有一个主体的存在。无法完整的去模拟出现实的世界面向对象:是完整的去模拟出现实世界中的业务逻辑。在显示世界中的一个主体,如果使用面向对象的方式来描述,将该实体(人,物,事)映射到编程世界中,作为编程世界中的一个主体(对象)。问题:使用面向对象思路去完成学生报到的系统1、 分析现实的业务逻辑中,完成该动作,需要几个实体三个实体,
3、学生,学校,班级2、 需要在程序中去建造三个实体3、 为每一个实体去添加一些功能学生:报到,缴费,选班学校:登记,收费班级:录入信息4、 在完成系统的,只需要在适当的时候,让一个实体去执行不同的功能。面向对象的语法基本概念对象:在现实中看的见,摸的着的东西,映射到程序中都是对象。对象是数据和附加在数据上操作的集合体。对象怎么来的?通过 实例化 类 得到的类:对一些具有相同特征的事务的总称,抽象化的描述。本身不是一个具体的对象。是多个具体对象的描述。规定结构的。昆虫是什么?是对具有相同特征虫子的描述(翅膀,触角,多条腿)。实例化:将一个类变成一个具体的对象的过程。设计图纸:规定房子的一些结构。对
4、象:根据设计图纸,建造出来的房子。从图纸到房子的过程:称为实例化。不参与建造过程,不参与实例化的过程。基本语法声明类使用class关键字Class 类名类中包含两个部分:成员属性和成员方法成员属性数据,使用变量保存数据,需要使用修饰符来描述变量,public。公共的。成员方法操作,就是一个动作,一个功能。就是一个函数。使用关键字function 方法名()为方法添加修饰符,public实例化完成实例化的操作。使用一个关键字 new 类名注意:1、 在使用对象的时候,需要将对象保存在一个变量中,对象也是一个数据2、 类名是不区分大小的3、 每一个实例化,生成的都是一个不同的对象。如何为每一个对象
5、添加不同的属性?将每一个的姓名都叫了刘备每一个学生是一个对象,每一个对象的名称都是不一样的。使用对象操作符 ,访问成员(成员属性和成员方法)对象-成员访问对象$对象1 成员$对象2 - 成员访问成员属性得到一个对象$stu1,为该对象中name的属性(变量)赋值。需要找到当前对象的name属性。使用$stu-name ,直接赋值。注意:1、操作其中一个对象的时候,对其他的对象没有任何的影响2、对象的在内存上的分配访问成员方法使用-方法就是函数,调用一个函数函数名(),调用方法:方法名();Baodao()方法在类或在对象身上。先找到对象$stu-baodao();该方法时属于每一个对象的当前使
6、用实例化的三个对象,访问成员方法的时候,执行的都是同一个操作伪变量每一个不同的对象,去访问baodao(),方法的时候,需要知道当前对象的名字。直接使用了$name变量,出现了一个变量未定义的错误。在方法(函数)中,变量的作用域。在当的局部变量中,没有一个$name的变量。使用global修饰的变量,是将全局的变量的引入覆盖局部的同名变量。调用函数,就可以取传递参数,哪一个对象方法了该方法,就将该对象传递这个方法里面对象访问成员属性的方式,获取当前对象的name。$this:这个,访问当前方法的这个对象。系统内置的。是一个局部的变量。该局部的变量有个特点。当某个对象去访问方法的时候,php会自
7、动确定是哪个对象在方法,然后将该对象,赋值给$this的局部变量哪一个对象访问的$this表示的就是这样对象。构造方法 _construct是php内置的方法,当对象在实例化的(在new的时候),会自动去调用,在该方法中完成初始化的操作。在实例化对象的时候,为每一个对象都设置一些初始的值观察以上代码。发现,1、有一个属性的值在最初始的时候,永远都不会发生变化。可以在类中,直接为该属性设置一个默认的初始值。2、在初始化赋值的时候,所有的操作都是重复的,可以将该操作封装成方法,再去调用该方法即可 为每一个成员属性赋值。调用该初始化的方法执行该方法,完成了初始的操作。3、如果可以在建造的时候,就可以
8、完成初始的操作。Php内置一个方法,可以在对象实例化的时候,自动去调用该方法。构成方法需要在实例化的为构造方法传递实参在实例化的时候,如果类中存在构造方法,并且需要传递参数,这时候,需要在类名的后面加上(),并且写入实参构造方法的作用:为当前对象做初始的操作。实例对象也叫作构造对象。析构方法 _destruct()和构造方法是相对的,构造方法时实例化对象的时候调用,做初始化的操作,析构方法时在对象被销毁的时候自动调用。销毁对象:对象是一个数据。数据保存在一个变量中是将student的一个类的对象,作为数据赋值给了$stu.销毁该变量。当一个对象不在被引用的时候,php垃圾回收的机制,会自动释放
9、内存。1、某一些资源被使用的时候,销毁对象的时候,在析构方法中,去释放某些被占的资源内存。2、如果不手动的去销毁对象,在脚本结束之后,析构方法也会被自动调用因为php中变量是有最大的生命周期。脚本执行结束,会将当前脚本中所有的变量全部释放,会触发到析构的方法。4、 向栈内存中存在了四个变量。先进后出,在声明变量的时候,一次a,b,c,d,执行构造方法。当脚本执行结束的时候,栈内存,将d,c,b,a依次去销毁,依次触发析构方法。注意:在对象被销毁的时候,自动调用1、 直接删除掉对象的引用2、 脚本执行结束了3、 为保存对象变量重新赋值只要某一个对象的引用被断开,都会自动调用析构方法。例1:使用面
10、向对象的方法完成学生报道系统1、 分析该系统需要几个实体?学生,学校,班级需要三个对象。设计三个类型,设置类的结构。2、 根据业务逻辑的需要,为每一个类添加上对应的属性和方法学生类:添加属性添加方法学校类添加属性和方法班级类添加属性和方法3、 需要将类实例化成对象为对象设置初始值,构造方法学生对象学校的对象班级对象4、 根据业务逻辑的需求去完成操作学生报到学校登记学生缴费学校收费学生选班班级录入例子:数据库操作类将多个操作封装在一起,设计一个数据库的操作类,工具集:将所有的功能全部组合一起。1、 分析一下数据库操作类,需要哪些属性主机名,端口号(3306),用户名,密码,数据库,字符集2、 初
11、始化成员属性的值使用构造方法3、 在构造方法中,去完成数据连接,设置数据库,设置字符集的操作连接的操作连接时候生成的数据,使用属性保存起来以上的所有的操作,都是一个独立的功能,会将独立的功能,分离出来。添加连接数据库的方法添加选择数据的方法设置字符集升级一下:类的静态成员需要去统计学生的数量学生的类型,该类的一个对象,就是一个学生。实例化的时候就会得到一个学生,销毁对象的时候,失去了一个学生。计数器:用于保存学生的数量,如何去设置这个计数器。计数器就是一个变量。1、 在类中定义一个属性是操作的每一个对象上的属性,成员属性是属于对象的2、 声明一个静态的变量在实例化的时候,的确可以统计学生数量。
12、在删除变量的时候无法完成,static定义的是静态的局部变量,在其他的函数中无法使用。3、 需要可以被每一个方法都可以共享的变量。每一个对象都可以操作的变量。定义一个全局的变量在php语法上完成了业务的逻辑。在业务逻辑本身是不符合面向对象的编程思维。需要找打一个可以被每一个对象共享,在每一个方法中使用,并且需要在逻辑上,符合面向对象的思维。只能在类里面找。类的静态成员是属性类的。静态成员:分为静态成员属性和静态成员方法。声明静态成员加上一个额外的关键字static 普通成员前面静态属性:不属于对象。静态方法:访问静态成员对象访问:对象-成员类 访问 静态成员;: 静态访问符,范围解析操作符类:
13、静态的成员;访问静态的属性需要在属性的前面加上$.访问静态的方法类:静态的方法注意:1、 在类的里面也是使用了类名去调用了静态的成员,在类使用当前的对象?使用$this.在类里面也有一个类型于$this东西的存在。Self;$this:表示当前的对象Self:表示当前的类只能在类里面使用2、 在访问上,静态的成员只能使用 : 去访问使用对象-静态成员,是不可以。但是可以使用对象,按照类的访问访问去访问静态属性静态属性存在在类面。需要通过某一种方式去找到这个类。可以使用对象去找打该对象的类。语法上可以使用,业务逻辑不这样写。3、 静态的成员是使用的静态的调用方式,普通的成员使用对象去调用静态调用
14、:类:静态成员非静态调用:对象 -成员但是问题出现在成员方法上面。类调用静态方法和非静态方法使用对象的方法为什么会出现这样的现象?属性和方法的存在方式:对象:堆内存中变量:保存在栈内存类,方法和函数:保存用户代码区。4、 静态方法和非静态的方法的区别在于$this的使用类常量定义的普通常量类中定义常量使用define不是在类中定义常量Const 语法注意:1、 Const和define的定义的作用域2、 如果在类的外部使用const,只能在最外层的区域定义3、 在类中使用const的时候,const只能在类第一层区域定义Define可以在方法去定义。访问类常量使用: 访问类常量总结一下在设计一
15、个类的时候,成员属性:静态属性(static),非静态属性成员方法:静态方法(static),非静态方法。类常量:const定义继承设计两个类,书类,手机类书类:名字,价格,作者,出版社手机:名字,价格,制式分析,发现书类和手机类中,都有商品的名称和商品价格。是商品的都有部分,公共的部分。可以将公共的部分提出出来。定义如果一对对象a,中用户对象b中的属性,可以称为继承。可以省略公共的部分不写语法使用关键字extends。一个是为被继承时候,实例化的对象继承了Goods类,实例化的对象单继承一个类只能有一个父类,不可以有多个。Php中面向对象的概念。继承:在概念是对象去继承一个对象。语法是体现在
16、类的上面。Goods类:父类,基础类Book类:子类,派生类。Instanceof 判断一个对象是否是一个类的实例如果一个子类的实例,是否是一个父类的实例。一个对象是子类的实例,也是其父类的实例。重写如果在子类中存在和父类相同的成员,子类中的成员会重写父类中的成员1、属性的重写静态的属性不会被重写如果在继承的时候,父类中有个静态的成员属性,而子类中定义了一个非静态的同名属性,则会报错2、方法的重写虽然在子类定义了与父类中同名的方法,方法任然是存在的。可以使用类名去引入父类中的方法$this的问题1、 当有一个对象在访问某一个方法的时候,在该方法中$this,表示是该对象2、 使用一个类在调用一
17、个非静态方法的时候,$this还是存在的对象环境的概率:对象是可以向下传递的。如果在一个环境中已经去可以确定该对象是哪一个。是向下传递的。方法里面去调用其他的方法时候,是有这个对象的存在的。只有在被继承的时候,对象才会被传递Parent 父类在继承的时候,可是使用parent去调用父类中的方法构造方法一定被重写对象的初始化在子类的对象被初始化的时候,子类继承了父类的某系属性,可以将值传递到子类中的构造方法中,然后在子类的构造方法中去调用父类的构造方法。访问控制修饰符Public:公共的Protected:受保护的Private:私有的3p用于规定,成员可以在哪个区域被访问到。Php将类分成三个
18、区域:类的外面,类里面,继承链的类里面三个区域:使用一个property属性测试Public 公共的可以在任何的地方被访问到,类的外面还是类的里面Protected 受保护的在类的外部是不可以被访问到的可以在本类中,和继承链的类中访问受保护的Private 私有的只能在本类中可以被访问都封装性隐藏内部的功能实现,只开放对外的接口。手机:开,关机,打电话. (对外的开放接口)。手机的构造,硬件.(隐藏内部的实现)。私有化属性不允许被访问是有化了方法,方法在外部是不可以被使用的如果全部设置为私有的该类则没有了任何的作用,为类去开放一些公功能的访问控制(public)。可以设置一个外部可以访问的方法
19、,在该方法中去设置内部才可以方法问的私有属性。在公共方法中可以设置一些条件,来控制外部传递进来的数据封装性:是根据需要,如果某些数据,方法,不需要再外部被访问,可以将当的属性或者方法,设置成private或者protected。可以以在外部访问的使用public对外开放。魔术方法_get():当去访问一个非公有的属性的时候,会自动触发_get(),方法,不需要手动调用需要一个参数:自动接受访问非公共成员属性的属性名称直接使用$this-$key的方式访问$this-$key,$key获取了属性的名字,$this-is_baodao._set():在去为一个非公有方法的设置值的时候,会自动被调用
20、需要有两个参数第一个参数:访问非公有属性的属性名第二个参数:给属性赋的值为私有属性赋值_isset():在外部判断一个非公有的属性时候,自动触发需要一个参数:属性的名字_unset():在删除一个非公有的方法的时候会自动触发,传递一个参数参数是当前删除属性的属性名称删除了属性注意1、 私有成员的重写不可以被重写2、 访问控制的级别私有 受保护的 公共的在继承中重写的时候,子类中的成员的访问级别必须要小于等于父类中成员访问级别3、 没有访问机制,向下兼容低版本。Public ,protected ,private类可以做什么?1、 类可以实例成对象2、 类可以被继承3、 类可以访问静态的成员功能
21、单一的类只能实例化,而不能被继承只能被继承,而不能被实例化Final 关键字Final:最终的,继承链上最后一个类,不能被其他的类器继承。Final 类最终类保证了原来类的结构,不可以再有子类只能被实例化Final 方法默认情况下,在继承的时候,方法是可以被重写的,如果使用final方法去修饰该方法,则该方法不可以被重写不能修饰成员的属性没有为当前的类增加一些额外的功能,还限制了类本身具有被继承的功能,用于保证数据的完整性。保护类的结构。抽象类只能被继承不能被实例化抽象类:拥有抽象方法的类,是一个不完整的方法,是一个只有方法的声明,而没有方法的实现。没有方法体,没有部分。抽象方法:没有方法实现
22、。声明抽象类使用关键字,abstract,需要为类和方法加上abstract关键字符修饰不可以被实例化只能被继承在继承的出现的问题如果一个类继承了一个抽象类,必须去实现该抽象类中的抽象方法如果不去实现方法的时候,需要将子类也定义为抽象的子类限制某个继承的子类中,必须去实现抽象类中的方法。需要子类按照定义的结构来使用。做一个规定的和限制的作用。抽象类:并不是表示该类中只能有抽象方法,在拥有其他正常的成员的基础上,去额外的正增加了一个抽象的方法。接口 是一种独立的结构技术。抽的不再抽了。定义的都是抽象方法。是用于定义一个类的结构,限制一个实现该接口的类,必须实现接口中定义的公共的抽象方法定义接口使
23、用关键字interface只能有一个没有方法体的方法。接口的方法只能被定义成公共(public)的方法实现接口使用关键自己 implements以下的语法,可以出现在接口中,可以出现在抽象类在实现一个接口的时候,将实现该接口的类,定义成一个抽象类如果不定义成抽象类,需要将实现该接口的类中的抽象方法多实现继承语法是不可以多继承的,接口是可以多实现的是多实现,只是可以使用接口,来模拟多继承的操作,本质不是类的概念。接口和抽象类的区别1、 抽象类和普通类之间的关系,继承的关系使用关键字extends。普通类,会有抽象类已经定义完成的成员,还可以去实现定义在抽象类的抽象方法2、 接口和普通类之后是一个
24、什么关系使用 implements,实现,实现的关系。使用一个接,去定义一个类,必须实现的公共的方法。定义结构。3、 接口中只能去定义公共的抽象方法,抽象类,任何的都可以。4、 接口不是一个类。是一个独立的结构技术。设置结构。Class _exists():判断是否是一个类型5、 接口中只能定义公共的方法。可以定义一个类常量多态性在继承的时候,一个通过的方法可以被实现成不同的功能。在继承的时候,应该是一个方法,被实现不同的功能。继承了一个方法,在子类这个实现了多次调用一个方法的时候,执行不同的功能。Php中完成多态性。类文件的管理一个项目中需要有很多不同功能的类。如何去管理类?典型的做法:将一
25、个类定义成一个文件,一个文件中只能有一个类。Goods,类,book类,phone类。发现在使用的时候出现了问题。文件载入的技术老方法完成类的引入将所有的文件全部在一个文件中载入。去载入这一个文件。执行一些功能的时候,可能只需要,某一部分的类。如果载入了,增加额外的开销。按需载入类如在一个脚本中,如果需要某个类,载入这个类型。如果这个已经存在于当前的脚步,不需要载入了。Php中内置提供自动载入机制。自动载入可以根据需要,去判断是否在当前脚本中加载了某一类文件,如果没有加载,php机制,会触发一个叫_autoload()函数。Php核心:只是去调用叫这个名字的函数。是判断类文件在不在,需要哪个文
26、件。有个类文件的存在,则不会调用,不存在才会调用。还为这个函数传递了一实参,实参是类的名字用户脚本:需要自定义这个函数,函数的名字叫如果有该类的存在,则不会调用定义函数功能可以根据传递到函数里面的类的名称,根据类的名称可以载入该类的文件。根据类的名称,拼接成一个该类所在文件路径是需要某个类的时候,就会加载某个类文件。并不是去实例化才会加载继承的时候:在定义一个类文件名称的时候,需要按照某个固定的规律。所有的列文件的名称必须是相同的一个格式。xxx.class.php将类的名称和类文件的名称定义成一样的对象的拷贝将一个对象赋值另外一个对象:只存在引用的传递将变量指向的地址内存中数据复制成一份新的
27、,新的不是对象,而是对象的标示。指向是同一对象。对象的克隆生成了一个新的对象。新的标示在去操作其中一个对象的时候,不会影响其他的对象在使用clone的时候,会自动调用一个魔术方法,_clone序列化和反序列化在php脚本中所渗出的数据,是有一个最大的生命周期,在当前脚本执行完毕的时候,变量中的值会被自动销毁。需要将数据永久的保存起来。使用文件保存数据,使用数据库。从文件中拿出的是字符串的。以字符串的保存的。Php中的数据类型,不仅仅是字符串。想将一个布尔值保存在文件中。写入文件:file_put_contents(文件的路径, 数据);读取文件:file_get_contents(文件的路径)
28、;在存储的时候,数据的类型发生改变了。存入之前是声明的数据,拿出的也是一个什么样的数据。保存:数据 -字符串格式 -保存到文件中读取:字符串的数据原来的格式的数据。使用json,轻量级的字符串。Json_encode():将数据转为json字符串Json_decode():将json字符串,转为原来的数据格式序列化将数据转为一个具有特定格式的字符串,串行化Serialize():序列化数据反序列化将已经被序列化的数据,转为之前的数据格式Unserialize()注意:将任何的数据类型都转为字符串,资源是无法这样操作的。使用序列化的操作,是为了将数据可以永久的保存起来,资源类的数据,本身就是已经
29、在磁盘上永久的存在,不写手动去操作。Null:对象的保存可以将对象转为json的格式,写入到文件中使用序列化的格式注意:1、 保存对象的时候,需要注意属性的访问控制修饰符使用json格式保存的,只能保存公共的属性使用序列化的格式,可以保存所有的数据的属性2、 使用json保存的对象,不在是原来的对象,json只是用于保存数据。3、 使用序列化保存的对象,真正的保存对象。可以在反序列化的时候,使用对象的成员4、 在反序列化的时候,如果想使用之前的类,需要保证该类在当前的脚本里面否则将会调用,一个_PHP_Incomplete_Class.类的对象。5、 使用反序列化的时候,触发自动加载机制_sl
30、eep()在使用serialize的时候,会自动触发,可以定义对象中允许被序列化的属性。不需要什么参数,但是需要返回一个数组,数组中的元素是当前的属性名_wakeup()在使用unserialize(),反序列化的时候,会自动触发返回的是一个完整的对象。在反序列化的时候,对当前的对象做一些初始化的操作单例模式模式设计中的一种,单例:就是一个实例,一个类,在一个脚本中只能存在一个对象。单例模式,在使用一个对象,可以完成所有的业务逻辑。每一个实例化得到不同的对象三私一共私有化:构造方法私有化:_cloen方法私有化:静态属性公共的:一个可以得到对象的公共的静态方法。如何实现单例模式1、 在实例一个
31、类的时候,可以得到一个对象,每一次实例化,就会得到一个不同的对象。可以将实例化的对象的功能去除,让类无法去实例。无法使用 new 使用new来实例化对象的时候,会自动触发构造方法。_construct();改变构造方法的访问级别,让当前的构造方法无法再类的外部被调用。私有构造方法2、 这时候是没有了对象,就不用用对象去调用类中成员。在类的里面声明一个静态的方法,使用类的名称去调用,在方法里面去实例化对象3、 在静态的方法中去设置一个条件,判断一个对象是否存在,如果对象存在,则不去实例化,如果对象不存在,再去实例化对象。设置一个静态的属性,用用户保存实例化的对象。在去判断该属性是否是一个对象。4
32、、 在对象已经存在的时候。可以使用clone的方式去得到一个新的对象需要当前对象不可以被clone。在使用clone的时候,会自动的去调用一个_clone的方法。将_clone方法是指为私有。项目中实现单例方式去定义一个函数,实现单例的函数,完成多个类的单例模式需要使用数组的方法保存对象可以使用instanceof 来进行判断,当前的对象是否是一个类的实例。重载其他语言中面向对象中的重载,表示的是,一个类中可以拥有同名的类方法。只不过该方法中的,参数个数,参数的类型不一致。Php中重载:是一种处理问题的方式,在处理在访问不可访问的成员时,处理问题的方式。不可访问的成员:1、 设置了访问的级别,
33、私有,受保护。2、 访问不存在的成员的时候。动态创建成员。使用魔术方法来处理问题。属性的重载需要使用,四个魔术方法_set,除了访问非共有的属性会触发,在访问一个不存在的属性也会触发_get(),访问非公有的成员属性或者方法一个不存在的成员属性,都被触发_isset(),使用isset和empty去访问一个不可访问的成员属性的时候,会自动触发_unset(),删除一个不可访问的成员属性时会自动触发方法的重载_call(),当访问一个不可被访问的成员方法时会被自动出的两个参数:一个成员方法的名称,传递个方法的参数(数组)。在类里面访问的时候,也会触发_callStatic():当使用静态的去访问
34、一个方法的时候,会被自动调用只要使用静态的调用方式都可以触发魔术方法魔术方法,在php 中某些特定的情况下,会被自动触发的方法,魔术方法,_开头的。_construct():实例化的时候自动调用_destruct():在销毁一个对象的时候,自动调用_clone():在克隆对象的时候自动调用_set(),_get(),_isset(),_unset(),_sleep(),序列化的时候,自动调用_wakeup():在反序列化的时候,自动调用_call():访问一个不可被访问的方法时调用调用_callStatic():使用静态调用一个不可被访问的方法时被自动调用_invoke():使用一个对象调用函
35、数。_toString():在一字符串环境下去使用对象的时候,自动触发后期静态绑定就是在继承的时候,可以去使用static来表示静态访问方法的类问题:1、$this是什么,保存当前调用方法的对象,表示的是当前的对象2、self是什么,表单当前的类本身。在一个方法,静态调用的方法,去确定调用方法的类。Self用户表示的是当前的类吗?在继承的时候,不是一直代码静态调用方法的类型。对象的链式操作调用方法的使用,类似于链条。一个接一个的去调用方法当前的成员方法需要使用对象才能调用,需要将一个对象返回到调用函数的地方。数据库操作类1、 完成单例模式三私一共:在公共的方法中,完成对象的实例,并且将需要操作
36、的数据表作为参数传递到该方法中在实例化完成之后,可以通过该对象,去访问私有的成员属性,并为其赋值。2、 需要在实例化的时候,就完成对数据的连接操作在构造的方法中去完成数据的初始化操作需要将配置文件中数据库的配置项,载入到当前的类中去使用,执行数据库的初始操作3、 实现连接数据的方法4、 实现设置字符集的方法5、 增加一个查询的方法,生成查询的sql语句字段,where,group by,having ,order by,limit _call的高级应用,用于方法的重载,完成链式操作声明一个数组,用户设置运行的链式操作的方法。设置一个_call的方法,用于链式的操作利用_call本身的功能,访问
37、一个不存在的方法,会自动触发,在这个函数里面做一些操作。获取到访问方法的时候,传递的参数,将操作作为一个数据,保存在一个数组里面。该数组是以允许的方法名字,为下标的。在去调用查询的放的时候,可以去取到数组中的执定下标的值。如果有将会在sql语句上添加上,如果没有就是空的字符串。类型约束类型:php中的数据类型。约束参数必须是一个什么样的类型Php是一个弱类型的语言,给一个变量中保存什么值,该变量就是该值表示的数据类型。给一个函数,方法传递参数的时候也是一样的。约束函数和方法的参数的类型。5.6只有数组合对象的类型约束。Int,string,数组对象类型的约束对象的类型约束表示的是,必须是某一个
38、类的实例定义的函数中的类型,是Object类的对象的一个约束,表示当前的函数的参数必须是Object的一个实例,Say(new DB),传进去的是一个DB类的一个实例,不是Object,所有不可以传递。不是函数参数的允许的数据。遍历对象简单遍历遍历数组是一样,使用foreach,可以将对象中的数据遍历出来遍历对象的时候,只能去遍历公有的属性。自定义遍历需要使用php中内置的一个接口,Iterator,在使用foreach 去遍历对象的时候,他判断该类是实现了接口中的方法,如果实现了该方法,需要用这个接口中的方法来完成遍历。Rewind(),重置遍历对象的开始的执行。Current(),返回值K
39、ey(),得到键Next();向下移动一个元素Volid();判断需要实现五个方法TraitsPhp中的继承是不可以被对继承的。作用是:代码的复用机制。从而可以模拟出来多继承的功能定义traits使用Trait定义在定义一个traits的时候,不可以使用常量。使用trait使用use的语法,将trait引入到当的类中,引用了当前trait中所有的成员一个类可以使用多个trait注意:1、 如果一个trait中已经定义了个一个属性,在使用这个trait中的类不可以再去重复的定义该属性2、 如果在一个本类中,继承了父类,并且引用了trait,存在同名的方法,这个方法有个优先级本类中的方法 trai
40、t中方法父类中的方法3、 如果在引入多个trait的时候,方法如果同名了,则会冲突将冲突解决了。指定去使用哪一个trait中的方法Insteadof:使用那个方法替代另外一个使用as可以为同名的方法取一别名必须需要使用替代之后才可被替代的方法取别名。4、 可以使用as在未方法取别名的时候再次去设置方法的访问权限命名空间空间就是一个区域,将一类的东西封装起来。操作系统:目录的管理,在同一目录中创建两个同名的index.php前台的首页:admin/index.php后台的首页:web/index.php访问index.php.访问前台:web/index.php访问后台: admin/index.php一个目录就是一个空间。将操作系统中,目录的管理实现方法,放在php编程里面,命名空间的概念Php命名空间如在在同一脚本中,去定义两个相同名称的类,函数,常量,是不可以实现的如果就想在一个脚本中定义两个同名的,函数,类,常量,就需要使用命名空间。将当前的脚本分为不同的空间,在各自的空间去定义即可此时在不同的空间中定义的相同的类,函数,常量,则不会发生冲突。定义空间使用 namespace在声明了命名空间的时候如果没有去声明命名空间当前脚本:全局空间定义多个名空间注意:1、 如果在命名空间中定义了与系统中同名的方法那么使用将是命名空间中所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 年中职高铁乘务(高铁服务)试题及答案
- 火锅底料厂培训
- 中层管理培训班结业汇报
- 婚礼秀活动策划方案
- 中班幼儿安全常识
- 学前教育法解读培训课件
- 创意之光:年度履职全景呈现-黄色-东方美学
- 雨课堂学堂在线学堂云《牛病防治技术(锡林郭勒职业学院)》单元测试考核答案
- 双人工作制度
- 合唱室工作制度
- 江西省重点中学协作体2026届高三下学期第一次联考英语试卷(不含音频及听力原文答案不全)
- 太原铁路局集团招聘笔试题库2026
- 企业信息安全事件应急响应与处理手册
- 行业招聘面试问题清单专业能力测试版
- 广西机场管理集团秋招试题及答案
- 上交所2026校招笔试题
- 2026江西省港口集团有限公司第一批次社会招聘17人笔试备考试题及答案解析
- 车间内部转运车管理制度
- 2026年南阳农业职业学院单招职业技能考试题库及答案详解(各地真题)
- 麻醉门诊评估指南解读
- 道路交通事故现场处理指南
评论
0/150
提交评论