php中常用关键字及魔术方法

来源:互联网 发布:淘宝虚拟物品退款技巧 编辑:程序博客网 时间:2024/05/18 02:08
 

一,常用关键字。

     a,final

         1,不能修饰成员属性。只能修饰类和类中的方法。

         2,使用final修饰的类不能被子类继承!

         3,使用final修饰的类不能被子类覆盖(或重写)!

         作用---------------->用来使类不被继承,方法不被覆盖!

     b,static(类级别)

         1,可以将类中的成员(属性,方法)标识为静态的,但不能修饰类!

         2,(存储在内存的“数据段”)

         3,修饰的成员属性可以被同一个类中的所有对象共享。

         4,静态数据是在类第一次被加载时分配到内存中的,以后再用到类时直接从“数据段”中获取。

         5,只要在程序中使用到这个类(类名出现即类被加载),那么这个类就被加载了。

 

         注意:静态的成员(方法,属性)都要使用类名去访问,不需用(不要用)创建对象,就可以调用。

               格式:类名::静态成员属性(方法)---------对象内外均为此格式!

 

         注意:如果在类中使用或者访问静态成员,可以使用self代表本类,这样在修改了类名的时候,可以不用修改“类名”的引用!

 

         6,静态方法(static修饰的)不能访问非静态的成员。(在非静态的方法中可以访问静态成员)因为非静态的成员必须用对象来访问,这时访问内部的成员就需要使用$this关键字。但是静态方法是直接用类名访问的,即根本没有实例化对象,不存在对象,则$this关

键字也不知道指向哪个对象,所以静态方法(static修饰的)不能访问非静态的成员。

 

         所以,如果确定一个方法不使用非静态成员,那么可以将此方法声明为静态方法!

 

       c,const

          1,只能修饰成员属性。

          2,类中声明常量使用const关键字。

          3,格式为:和define一样。为----------->const IP = "192.168.1.1" ;

          4,访问方式和静态成员属性一致。在类外部---------->类名::常量名。在类内部---------------->self::常量名。

          5,类中的常量一定要在声明时赋值。(存储在“数据段”)

 

二,常用魔术方法。

 

       a,__call();

          1,在调用对象中不存在的方法时,__call()魔术方法会自动调用

          2,处理一些不存在方法的错误调用。

          3,这个方法需要两个参数。

              function __call($methodName,$args){

 

              }

 

       b,__toString();

          1,用来快速读取对象用字符串表示的最便捷方法。

          2,直接输出对象的引用时自动调用。

          3,该方法必须返回一个字符串。

 

       c,__clone();

          1,复制(克隆)对象使用clone处理---------->$p1 = clone $object。

          2,__clone()是在克隆对象的时候自动调用。

          3,只要一个对象一诞生,就要有初始化的动作。

          4,和构造方法__construct()相似,它是为克隆出来的副本对象初始化。

          5,在__clone()方法中$this关键字代表的是副本对象。($that代表原本对象。)

 

       d,__autoload();

          1,其他的魔术方法都是在类中添加起作用的,这是唯一一个不在类中添加的方法。

          2,在类外部添加的方法,可以自动加载类!

          3,只要在页面中使用到一个类,就会自动将类名传给__autoload(类名参数)类名参数。

 

          对象串行化(序列化):将一个对象转为二进制串。

                             1,将对象长时间存储在数据库或文件时使用对象串行化。

                             2,将对象在多个PHP文件中传输时使用对象串行化。

          serialize():参数是一个对象,返回这个对象串行化后的二进制串。------------序列化

          unserialize():参数是对象的二进制串,返回来的就是原序列化之前的对象。----------------反序列化

       e,__sleep();

          1,在对象序列化时自动调用的方法。

          2,可以将一个对象部分串行化。(只要这个方法中返回一个数组,数组中有几个成员属性,就序列化几个属性。如果不加这个方法,则所有成员都被序列化!)

 

       f,__wakeup();

          1,在对象反序列化时自动调用的方法。

          2,可以将一个对象部分反串行化。(也是对象重新诞生的过程------>__construct(),__wakeup(),__clone())

原创粉丝点击