ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルの魔法のメソッドを学ぶ
__set_state()
var_export は、コレクションを文字列 (実行可能な PHP コード) としてエクスポートできます。 php5.1.0 のオブジェクト指向バージョンでは、var_export がオブジェクト インスタンスのエクスポートをサポートできるようにするために、__set_state と呼ばれる静的メソッドが導入されています。 var_export を使用してインスタンスをエクスポートする場合、エクスポートされた文字列には、この静的メソッドを呼び出すコードが含まれます。このメソッドは、エクスポートされたインスタンスのすべてのメンバー プロパティを含む配列である 1 つのパラメーターを受け取ります。少し抽象的ですが、以下の例を見てください。
$v) { $obj->$k = $v } $obj; }}$i = new o;$i->age = 21;eval('$b = '.var_export($i,true).';');//ここで true は、var_export が Export を返すことを意味します文字列を印刷する代わりに。 print_r($b);/*出力: stdClass Object( [スキル] => php [年齢] => 21)*/?>
__クローン()
PHP5 では、オブジェクト間の代入は常にアドレス参照によって渡されます。たとえば、次の例では 55 ではなく 66 が出力されます。
age = 66;echo $i2->age;?>
実際の値として渡したい場合は、clone キーワードを使用する必要があります。
age = 66;echo $i2->age;//出力 55?>
ただし、ここでは $i インスタンスのみが複製されます。 $i のメンバー属性がインスタンスでもある場合、このメンバー属性は参照によって $i2 に渡されます。たとえば、次の例:
sub=new o2;$i2 = クローン $ i;$i->sub->p=5;echo $i2->sub->p;?>
最終的な出力は 1 ではなく 5 です。つまり、$i と $i2 は同じインスタンスを指していませんが、それらのメンバー属性 $sub は同じインスタンスを指しています。このとき、__clone メソッドを使用して $sub をコピーする必要があります。 o クラスに、__clone() メソッドを追加します。以下の通り:
sub=clone $this->sub }}// >
このように、echo $i2->sub->p; を実行すると、通過時の出力は値 1 になります。
__autoload()
インスタンスを作成するときに、対応するクラスが存在しない場合、この関数には 1 つのパラメーターがあり、それは作成されるインスタンスに対応するクラス名です。次の例では、テスト クラスのインスタンスを作成するときに、/home/surfchen/project/auto.php が存在する場合はこのファイルを要求し、存在しない場合はクラス テストが見つかりませんエラーを出力し、現在のスクリプトを中止します。
http://www.bkjia.com/PHPjc/371638.html
という関数が導入されています。