魔法の機能を説明

1 .__)(()和の__destructを構築

   __construct()オブジェクトが初期化されるとき、このメソッドが呼び出されるよりも多くして、この方法。(カーネルのためには、初期化が完了した後、このメソッドが呼び出されることを意味します)。

   オブジェクトが破棄される__destruct()このメソッドを呼び出します。オブジェクトは、それを破壊するので、とき?プログラムの終了を自動的にエンジンによって破壊された場合、まず、ユーザが積極的に、第二のオブジェクトを破壊し、

     

 

2 .__取得()と__set()

   二つの方法の高い周波数でのオブジェクト指向プログラミングオブジェクトを設定し、アクセス許可のプロパティを取得する。、このメソッドが呼び出されます。いくつかの注意がないか、または読み書きする時に呼び出されます許可されていません。したがって、それは良好な結果を両方の方法で、不確定な特性であるオブジェクトのため。

   __get($名)を取得したときにプロパティオブジェクトが存在しないか、プロパティにアクセスすることはできません。$名前を取得するプロパティの名前を表し呼ばれます

   __set($名、$値)が存在しないオブジェクトのプロパティを設定するか、プロパティにアクセスすることはできません。$名がプロパティ名を設定することを示しているときに呼び出され、$値を設定する値を表します。

     

3 .__ ISSET()と__unset()

   これらよりも少ないとこれらの2つの方法。メソッドを呼び出したとき ISSETは()オブジェクトがプロパティが存在するか否かを判断する際、未設定()キャンセルプロパティを呼び出します。そして、属性が存在しないかアクセスできないときに、彼らは(それぞれ__unset)(__issetを呼び出す)メソッド

Luetong __get()と__set()。プロパティが存在しないか、アクセスできませんときに呼び出されます

   クラスのプロパティのメソッドISSET()メソッドを呼び出したときに呼び出さ__isset($名)が決定されてアクセスできない。$名はname属性を表します。 

   __unset($ name)メソッドの呼び出しアクセスできないクラスのプロパティを削除するには、unset()メソッドを呼び出すとき。$名は、属性名を表します。

     

4 .__()の呼び出し和__callStatic()

   在获取对象的属性时,如果此属性不存在会调用__get()方法。那么如果调用此对象的方法时,如果此方法不存在呢?php引擎会自动调用__call()方法。

   同样,如果调用的是静态方法,且不存在时会调用__callStatic()方法。需要注意的是,__callStatic()使用时是一个静态方法,且仅在php5.3以上版本才支持.

   __call($method, $args) 调用对象方法不存在或不允许被调用时此方法会被调用。$method表示调用的方法名,$args表示调用的参数

   __callStatic($method, $args) 调用对象的静态方法不存在或不允许被调用时此方法会被调用。$method表示调用的方法名,$args表示调用的参数.

     

5.__sleep() 和 __wakeup()

   这两个方法,咋一看,就是睡觉和唤醒嘛。那跟对象有什么关系?有时候该用的时候也想不起来。其实,我们简单点记,在php中有一个让对象睡觉的方法,searialize(),

   它会将对象的各属性序列化以方便保存起来。而unsearialize()方法是将保存的序列化的数据解开变成对象。也叫唤醒。相对应的,当睡觉时,php会调用__sleep()方法,它的返回值必须是一个数组,表示需要保存的属性项, 对于文件句柄,数据库连接等资源类型的数据是不能被序列化保存的。同理唤醒对象时,php会调用__wakeup()方法,

   但与__sleep()不同的是,它返回值为空。被保存的属性都会被解开。那它有什么用呢?刚我们说了,searialize是不能保存资源的。那么唤醒时如果我们想用到这些资源怎么办?回答很肯定,重新创建?那在哪里创建合适呢?当然是__wakeup()方法里面,因为每次唤醒时都会调用此方法嘛。这下我们很清楚这两个方法的用途了。

   __sleep() 当调用searialize()方法时调用,返回值为数组,表示需要序列化的数据项.

   __wakeup() 当调用unsearizlie()方法时调用。一般用来在唤醒时初始化资源对象.

6. __toString()
   当对象在需要转换成字符串时,会调用此方法。例如,echo对象时,将对象强制转换为string类型时, 用于字符串参数的函数中.注意:此方法的返回值必须为字符串。

   

7. __clone()
   此方法在复制对象时被调用。我们知道在php中 $a为一个对象,$b=$a时。$b为$a的引用。当$a发生改变时。$b也会随之发生变化。那么为了使$b不发生变化,我们需要用$b=clone $a;
那么,当$a在调用clone的时候,引擎会自动调用__clone()方法 
      

   

8.  __autoload()
   autoload顾名思义就是自动加载。它主要用来自动加载类。那如何自动加载呢?我们都知道在php中,要使用另外一个文件中的类需要用require或include方法
(包括require_once和include_one)导入进来。那么如果我要使用的类未被导入,则引擎会自动调用__autoload()方法。利用此特性,当我们的类名和类文件有规律
地存放时,我们可以使用__autoload()方法,根据需导入的类名,让程序自动导入文件。此函数在许多的MVC框架中起着重要的作用。

   __autoload($name) $name表示需要自动导入的类名
   

9. __set_state()
   这个方法用得不多。了解这个方法前,需要先知道var_export()函数,var_export()和var_dump()类似,输出一个变量的字符串表示。他与var_dump的区别在于它的返回结果的是合法的
php代码.此代码可以被eval执行. 注意:此方法是一个静态方法,且在php5.1以上版本才支持。
   

10. __invoke()
   在php中这个方法用于,把对象当方法用的时候。此方法会被调用。很简单。注意,此方法仅5.3以上版本支持。  

   

 

おすすめ

転載: www.cnblogs.com/mzhaox/p/11236014.html