ホームページ >バックエンド開発 >PHPチュートリアル >PHP でのマジック メソッドの使用例

PHP でのマジック メソッドの使用例

little bottle
little bottle転載
2019-04-18 11:56:312632ブラウズ

この記事では、編集者が PHP でのマジック メソッドの使用法とそれに付随するコードについて簡単に説明します。興味のある方はぜひご覧ください。

「魔法のメソッド」とは何ですか?

PHP の 2 つのアンダースコアで始まるメソッド、__construct()、__destruct ()、__call()、__callStatic()、__get()、__set()、__isset()、__unset ( )、__sleep ()、__wakeup()、__toString()、__set_state,()、__clone()、__autoload()などは「マジックメソッド」と呼ばれます。 PHP でこれらのマジック メソッドを呼び出したい場合は、最初にクラス内で定義する必要があります。そうしないと、PHP は作成されていないマジック メソッドを実行しません。

1.__get __set は、アクセスできない属性の割り当ておよび読み取り時に呼び出されます。

2.__sleep は、オブジェクトのシリアル化時に呼び出されます

3.__wakeup は Call

4オブジェクトを逆シリアル化するとき. オブジェクトをシリアル化するときは、指定した属性のみをシリアル化し、シリアル化後にサイズを減らすことができます。オブジェクト文字列を、たとえば memcache に保存したい場合は、より便利です

5。たとえば、次の例では、データ属性のみをシリアル化し、__sleep 関数で制限しました。


<?php
class Test{
	public $name;
	protected $data=array();
	public function __set($name,$value){
		$this->data[$name]=$value;
	}
	public function __get($name){
		if(!isset($this->data[$name])){
			return "";
		}
		return $this->data[$name];
	}
	public function __sleep(){
		echo "sleep...\r\n";
		return array(&#39;data&#39;);
	}
	public function __wakeup(){
		echo "wakeup...\r\n";
	}
}
$test=new Test();
$test->name="我不会被序列化进去";
$test->bbbb="taoshihan";
$testObjectStr=serialize($test);
var_dump($testObjectStr);
var_dump(unserialize($testObjectStr));

関連チュートリアル: PHP プログラミングの入門から習得までの完全なビデオ チュートリアル セット

以上がPHP でのマジック メソッドの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。