{"id":17,"date":"2025-12-21T22:03:34","date_gmt":"2025-12-21T14:03:34","guid":{"rendered":"https:\/\/blog.miren.baby\/?p=17"},"modified":"2025-12-21T22:03:34","modified_gmt":"2025-12-21T14:03:34","slug":"php%e5%8f%8d%e5%ba%8f%e5%88%97%e5%8c%96%e5%9f%ba%e7%a1%80%ef%bc%88%e9%ad%94%e6%9c%af%e6%96%b9%e6%b3%95%ef%bc%89","status":"publish","type":"post","link":"https:\/\/blog.miren.baby\/index.php\/2025\/12\/21\/php%e5%8f%8d%e5%ba%8f%e5%88%97%e5%8c%96%e5%9f%ba%e7%a1%80%ef%bc%88%e9%ad%94%e6%9c%af%e6%96%b9%e6%b3%95%ef%bc%89\/","title":{"rendered":"PHP\u53cd\u5e8f\u5217\u5316\u57fa\u7840\uff08\u9b54\u672f\u65b9\u6cd5\uff09"},"content":{"rendered":"\n<p>PHP\u53cd\u5e8f\u5217\u5316\u57fa\u7840<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"\u6982\u5ff5\">\u6982\u5ff5<\/h1>\n\n\n\n<p>\u5e8f\u5217\u5316\uff1a\u4f7f\u7528serialize()\u53ef\u4ee5\u5c06\u5bf9\u8c61\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\u7684\u5f62\u5f0f<\/p>\n\n\n\n<p>O:4:&#8221;Test&#8221;:3:{s:4:&#8221;flag&#8221;;b:1;s:4:&#8221;name&#8221;;s:8:&#8221;xiaoming&#8221;;s:3:&#8221;age&#8221;;i:20;}<\/p>\n\n\n\n<p>\u53cd\u5e8f\u5217\u5316\uff1a\u4f7f\u7528unserialize()\u51fd\u6570\u5c06\u4e0a\u8ff0\u7684\u5e8f\u5217\u5316\u7684\u5b57\u7b26\u4e32\u8f6c\u56de\u5bf9\u8c61<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u4ee3\u7801\u6848\u4f8b\">\u4ee3\u7801\u6848\u4f8b<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass Test {\n    public $flag = \"flag\";\n    public $name = \"lang\";\n    public $age = 10;\n}\n\n$test1 = new Test();\n$test1-&gt;flag = true;\n$test1-&gt;name = \"xiaoming\";\n$test1-&gt;age = 20;\n\necho serialize($test1);\n\n?&gt;\n<\/code><\/pre>\n\n\n\n<p>\u6267\u884c\u540e\u83b7\u5f97\u5e8f\u5217\u5316\u7684\u6570\u636e<\/p>\n\n\n\n<p>O:4:&#8221;Test&#8221;:3:{s:4:&#8221;flag&#8221;;b:1;s:4:&#8221;name&#8221;;s:8:&#8221;xiaoming&#8221;;s:3:&#8221;age&#8221;;i:20;}<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O\uff1a\u8868\u793a\u5bf9\u8c61\u7c7b\u578b\uff0cObject<\/li>\n\n\n\n<li><code>4<\/code>\uff1a\u7c7b\u540d\u7684\u957f\u5ea6\uff08\u201cTest\u201d \u662f 4 \u4e2a\u5b57\u7b26\uff09<\/li>\n\n\n\n<li><code>\"Test\"<\/code>\uff1a\u7c7b\u540d<\/li>\n\n\n\n<li><code>3<\/code>\uff1a\u5bf9\u8c61\u5c5e\u6027\u6570\u91cfflag\u3001name\u3001age<\/li>\n\n\n\n<li>\u6bcf\u4e2a\u5c5e\u6027\u7531s\uff08\u5b57\u7b26\u4e32String\uff09\u3001b\uff08\u5e03\u5c14BOOL\uff09\u6216i\uff08\u6574\u6570int\uff09\u5f00\u5934\uff0c\u540e\u8ddf\u5c5e\u6027\u540d\u548c\u503c<\/li>\n\n\n\n<li>N:\u4ee3\u8868\u7a7a\u503c<\/li>\n\n\n\n<li>a:\u6570\u7ec4 a:\u5927\u5c0f:{\u952e\u5e8f\u5217\u6bb5;\u503c\u5e8f\u5217\u6bb5;\u91cd\u590d}<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u8bbf\u95ee\u63a7\u5236\">\u8bbf\u95ee\u63a7\u5236<\/h2>\n\n\n\n<p>public\uff1a\u516c\u6709\u7c7b\u578b\u3001\u5168\u5c40\uff0c\u7c7b\u7684\u5185\u90e8\u548c\u5916\u90e8\u90fd\u53ef\u4ee5\u8bbf\u95ee<\/p>\n\n\n\n<p>protected\uff1a\u79c1\u6709\u7c7b \u53ea\u6709\u5f53\u524d\u7c7b\u7684\u5185\u90e8\u53ef\u4ee5\u8bbf\u95ee<\/p>\n\n\n\n<p>private\uff1a\u53d7\u4fdd\u62a4\u7684\u7c7b \u53ea\u6709\u5f53\u524d\u7c7b\u6216\u8005\u7236\u7c7b\u53ef\u4ee5\u8bbf\u95ee<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u5e38\u89c1\u7684\u9b54\u672f\u65b9\u6cd5\">\u5e38\u89c1\u7684\u9b54\u672f\u65b9\u6cd5<\/h2>\n\n\n\n<p>__construct(): \/\/\u5f53\u5bf9\u8c61new\u7684\u65f6\u5019\u4f1a\u81ea\u52a8\u8c03\u7528<\/p>\n\n\n\n<p>__destruct()\uff1a\/\/\u5f53\u5bf9\u8c61\u88ab\u9500\u6bc1\u65f6\u4f1a\u88ab\u81ea\u52a8\u8c03\u7528<\/p>\n\n\n\n<p>__sleep(): \/\/serialize()\u6267\u884c\u65f6\u88ab\u81ea\u52a8\u8c03\u7528<\/p>\n\n\n\n<p>__wakeup(): \/\/unserialize()\u65f6\u4f1a\u88ab\u81ea\u52a8\u8c03\u7528<\/p>\n\n\n\n<p>__invoke(): \/\/\u5f53\u5c1d\u8bd5\u4ee5\u8c03\u7528\u51fd\u6570\u7684\u65b9\u6cd5\u8c03\u7528\u4e00\u4e2a\u5bf9\u8c61\u65f6\u4f1a\u88ab\u81ea\u52a8\u8c03\u7528<\/p>\n\n\n\n<p>__toString(): \/\/\u628a\u7c7b\u5f53\u4f5c\u5b57\u7b26\u4e32\u4f7f\u7528\u65f6\u89e6\u53d1<\/p>\n\n\n\n<p>call(): \/\/\u8c03\u7528\u67d0\u4e2a\u65b9\u6cd5,\u82e5\u65b9\u6cd5\u5b58\u5728,\u5219\u8c03\u7528;\u82e5\u4e0d\u5b58\u5728,\u5219\u4f1a\u53bb\u8c03\u7528call\u51fd\u6570\u3002<\/p>\n\n\n\n<p>__callStatic(): \/\/\u5728\u9759\u6001\u4e0a\u4e0b\u6587\u4e2d\u8c03\u7528\u4e0d\u53ef\u8bbf\u95ee\u7684\u65b9\u6cd5\u65f6\u89e6\u53d1<\/p>\n\n\n\n<p>get(): \/\/\u8bfb\u53d6\u5bf9\u8c61\u5c5e\u6027\u65f6,\u82e5\u5b58\u5728,\u5219\u8fd4\u56de\u5c5e\u6027\u503c;\u82e5\u4e0d\u5b58\u5728\uff0c\u5219\u4f1a\u8c03\u7528get\u51fd\u6570<\/p>\n\n\n\n<p>set(): \/\/\u8bbe\u7f6e\u5bf9\u8c61\u7684\u5c5e\u6027\u65f6,\u82e5\u5c5e\u6027\u5b58\u5728,\u5219\u8d4b\u503c;\u82e5\u4e0d\u5b58\u5728,\u5219\u8c03\u7528set\u51fd\u6570\u3002<\/p>\n\n\n\n<p>__isset(): \/\/\u5728\u4e0d\u53ef\u8bbf\u95ee\u7684\u5c5e\u6027\u4e0a\u8c03\u7528isset()\u6216empty()\u89e6\u53d1<\/p>\n\n\n\n<p>__unset(): \/\/\u5728\u4e0d\u53ef\u8bbf\u95ee\u7684\u5c5e\u6027\u4e0a\u4f7f\u7528unset()\u65f6\u89e6\u53d1<\/p>\n\n\n\n<p>__set_state()\uff0c\u8c03\u7528var_export()\u5bfc\u51fa\u7c7b\u65f6\uff0c\u6b64\u9759\u6001\u65b9\u6cd5\u4f1a\u88ab\u8c03\u7528<\/p>\n\n\n\n<p>__clone()\uff0c\u5f53\u5bf9\u8c61\u590d\u5236\u5b8c\u6210\u65f6\u8c03\u7528<\/p>\n\n\n\n<p>__autoload()\uff0c\u5c1d\u8bd5\u52a0\u8f7d\u672a\u5b9a\u4e49\u7684\u7c7b<\/p>\n\n\n\n<p>__debugInfo()\uff0c\u6253\u5370\u6240\u9700\u8c03\u8bd5\u4fe1\u606f<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u5e38\u89c1\u53cd\u5e8f\u5217\u5316\u6837\u5f0f\">\u5e38\u89c1\u53cd\u5e8f\u5217\u5316\u6837\u5f0f<\/h2>\n\n\n\n<p>\u5e38\u89c1\u5f00\u59cb<\/p>\n\n\n\n<p>__wakeup()\u4e00\u5b9a\u4f1a\u88ab\u8c03\u7528\uff0c\u56e0\u4e3awakeup()\u662f\u5728\u4f7f\u7528unserialize()\u7684\u65f6\u5019\u88ab\u8c03\u7528\uff0c\u4f5c\u4e3a\u521d\u59cb\u5316\u64cd\u4f5c<\/p>\n\n\n\n<p>__destruct()\u4e00\u5b9a\u4f1a\u88ab\u8c03\u7528\uff0c\u56e0\u4e3adestruct()\u662f\u7528\u4e8e\u9500\u6bc1\u72b6\u6001\u7684\u65f6\u5019\u4f1a\u81ea\u52a8\u8c03\u7528\uff0c\u4f5c\u4e3a\u9500\u6bc1\u64cd\u4f5c<\/p>\n\n\n\n<p>__toString()\u5f53\u5bf9\u8c61\u88ab\u53cd\u5e8f\u5217\u5316\u540e\u53c8\u5f53\u4f5c\u5b57\u7b26\u4e32\u4f7f\u7528\u7684\u65f6\u5019<\/p>\n\n\n\n<p>\u5e38\u89c1\u4e2d\u95f4\u90e8\u5206<\/p>\n\n\n\n<p>__toString()\u5f53\u5bf9\u8c61\u88ab\u53cd\u5e8f\u5217\u5316\u540e\u53c8\u5f53\u4f5c\u5b57\u7b26\u4e32\u4f7f\u7528\u7684\u65f6\u5019<\/p>\n\n\n\n<p>__get()\u8bfb\u53d6\u4e0d\u53ef\u8bbf\u95ee\u6216\u8005\u4e0d\u5b58\u5728\u5c5e\u6027\u7684\u65f6\u5019\u4f1a\u88ab\u8c03\u7528<\/p>\n\n\n\n<p>__set()\u5f53\u4e0d\u53ef\u8bbf\u95ee\u6216\u8005\u4e0d\u5b58\u5728\u7684\u5c5e\u6027\u8d4b\u503c\u7684\u65f6\u5019\u4f1a\u88ab\u8c03\u7528<\/p>\n\n\n\n<p>__isset()\u5bf9\u4e8e\u4e0d\u53ef\u8bbf\u95ee\u6216\u8005\u4e0d\u5b58\u5728\u7684\u5c5e\u6027\u55f2\u7528isset()\u6216\u8005empty()\u7684\u65f6\u5019\u4f1a\u88ab\u8c03\u7528<\/p>\n\n\n\n<p>\u5e38\u89c1\u7ed3\u5c3e<\/p>\n\n\n\n<p>__call()\u8c03\u7528\u4e86\u4e0d\u53ef\u8bbf\u95ee\u6216\u8005\u4e0d\u5b58\u5728\u7684\u65b9\u6cd5\u7684\u65f6\u5019\u88ab\u8c03\u7528<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"\u5e38\u89c1\u9b54\u672f\u65b9\u6cd5\u6848\u4f8b\uff08\u53c2\u8003\u5c0f\u8fea\u5b66\u4e60\uff09\">\u5e38\u89c1\u9b54\u672f\u65b9\u6cd5\u6848\u4f8b\uff08\u53c2\u8003\u5c0f\u8fea\u5b66\u4e60\uff09<\/h2>\n\n\n\n<p>construct()\u3001destruct()\u6848\u4f8b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass Test{\n    public $name;\n    public $age;\n    public $string;\n    \/\/__construct\uff1a\u5b9e\u4f8b\u5316\u5bf9\u8c61\u65f6\u88ab\u8c03\u7528.\u5176\u4f5c\u7528\u662f\u62ff\u6765\u521d\u59cb\u5316\u4e00\u4e9b\u503c\u3002\n    public function __construct($name, $age, $string){\n        \/\/ \u7ed9\u7c7b\u7684\u5c5e\u6027\u8d4b\u503c\n        $this-&gt;name = $name;\n        $this-&gt;age = $age;\n        $this-&gt;string = $string;\n        echo \"__construct \u521d\u59cb\u5316\\n\";\n    }\n    \/\/ __destruct\uff1a\u5f53\u5220\u9664\u4e00\u4e2a\u5bf9\u8c61\u6216\u5bf9\u8c61\u64cd\u4f5c\u7ec8\u6b62\u65f6\u88ab\u8c03\u7528\u3002\u5176\u6700\u4e3b\u8981\u7684\u4f5c\u7528\u662f\u62ff\u6765\u505a\u5783\u573e\u56de\u6536\u673a\u5236\u3002\n    \/*\n     * \u5f53\u5bf9\u8c61\u9500\u6bc1\u65f6\u4f1a\u8c03\u7528\u6b64\u65b9\u6cd5\n     * \u4e00\u662f\u7528\u6237\u4e3b\u52a8\u9500\u6bc1\u5bf9\u8c61\uff0c\u4e8c\u662f\u5f53\u7a0b\u5e8f\u7ed3\u675f\u65f6\u7531\u5f15\u64ce\u81ea\u52a8\u9500\u6bc1\n     *\/\n    function __destruct(){\n       echo \"__destruct \u7c7b\u6267\u884c\u5b8c\u6bd5\\n\";\n    }\n}\n\n$a = new Test('miren', '20', 'hello');\n\nunset($a);\n\n?&gt;\n<\/code><\/pre>\n\n\n\n<p>\u5f53unset\u9500\u6bc1$a\u7684\u65f6\u5019\u8f93\u51fa<\/p>\n\n\n\n<p>construct \u521d\u59cb\u5316\ndestruct \u7c7b\u6267\u884c\u5b8c\u6bd5<\/p>\n\n\n\n<p>\u4ee3\u8868\u5728\u8fd9\u4e2aTest\u7c7b\u91cc\u9762construct()\u3001destruct()\u90fd\u4f1a\u6267\u884c\u4e00\u4e2a\u8fdb\u884c\u521d\u59cb\u5316\u4e00\u4e2a\u9500\u6bc1\u540e\u6267\u884c<\/p>\n\n\n\n<p>\u5f53\u6ce8\u91ca\u6389unset($a);\u540e\u4e00\u6837\u4f1a\u8f93\u51fa<\/p>\n\n\n\n<p>construct \u521d\u59cb\u5316\ndestruct \u7c7b\u6267\u884c\u5b8c\u6bd5<\/p>\n\n\n\n<p>\u662f\u56e0\u4e3a\u65e0\u8bba\u5982\u4f55\u90fd\u4f1a\u6ce8\u9500<\/p>\n\n\n\n<p>sleep()\u3001wakeup()\u3001__toString:\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass MyClass {  \n    public $sex;\n    public $name;\n    public $age;\n\n    public function __construct($name, $age, $sex) {\n        $this-&gt;name = $name;\n        $this-&gt;age = $age;\n        $this-&gt;sex = $sex;\n        echo \"__construct\u88ab\u8c03\u7528&lt;br&gt;\";\n    }\n\n        public function __sleep() {\n        echo \"__sleep()\u88ab\u6267\u884c\uff0c\u5e8f\u5217\u5316\u65f6\u8c03\u7528&lt;br&gt;\";\n        return &#91;'name', 'age', 'sex']; \n    }\n\n    public function __wakeup() {  \n        echo \"__wakeup()\u88ab\u6267\u884c\uff0c\u53cd\u5e8f\u5217\u5316\u65f6\u8c03\u7528&lt;br&gt;\";\n    }\n\n    public function __toString() {\n        return \"\u59d3\u540d\uff1a{$this-&gt;name}\uff0c\u5e74\u9f84\uff1a{$this-&gt;age}\uff0c\u6027\u522b\uff1a{$this-&gt;sex}\";\n    }\n}  \n\n\/\/ \u5b9e\u4f8b\u5316\u5bf9\u8c61\n$a = new MyClass('miren', 20, '\u7537');\n\/\/ \u5e8f\u5217\u5316\u5bf9\u8c61\n$b = serialize($a);\necho \"\u5e8f\u5217\u5316\u540e\u7684\u5b57\u7b26\u4e32\uff1a\" . $b . \"&lt;br&gt;&lt;br&gt;\";\n\/\/ \u53cd\u5e8f\u5217\u5316\u5bf9\u8c61\n$c = unserialize($b);\n\/\/ \u4f7f\u7528__toString\u65b9\u6cd5\u76f4\u63a5echo\u5bf9\u8c61\necho \"\u53cd\u5e8f\u5217\u5316\u540e\u7684\u5bf9\u8c61\u4fe1\u606f\uff1a\" . $c . \"&lt;br&gt;\";\n?&gt;\n<\/code><\/pre>\n\n\n\n<p>\u5f53serialize\u7684\u65f6\u5019\u81ea\u52a8\u6267\u884c\u4e86sleep() \u65b9\u6cd5\u3001\u5f53serialize\u7684\u65f6\u5019\u81ea\u52a8\u6267\u884c\u4e86wakeup()\u65b9\u6cd5<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>construct\u88ab\u8c03\u7528\n__sleep()\u88ab\u6267\u884c\uff0c\u5e8f\u5217\u5316\u65f6\u8c03\u7528\n\u5e8f\u5217\u5316\u540e\u7684\u5b57\u7b26\u4e32\uff1aO:7:\"MyClass\":3:{s:4:\"name\";s:5:\"miren\";s:3:\"age\";i:20;s:3:\"sex\";s:3:\"\u7537\";}\n\n__wakeup()\u88ab\u6267\u884c\uff0c\u53cd\u5e8f\u5217\u5316\u65f6\u8c03\u7528\n\u53cd\u5e8f\u5217\u5316\u540e\u7684\u5bf9\u8c61\u4fe1\u606f\uff1a\u59d3\u540d\uff1amiren\uff0c\u5e74\u9f84\uff1a20\uff0c\u6027\u522b\uff1a\u7537\n<\/code><\/pre>\n\n\n\n<p>invoke()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nclass Invokable {\n\n public function __invoke($x, $y) {\n\n  echo \"__invoke \u88ab\u89e6\u53d1&lt;br&gt;\";\n\n  return $x + $y;\n\n }\n\n}\n\n$obj = new Invokable();\n\n$result = $obj(3, 4);  \/\/\u6b64\u5904\u89e6\u53d1 __invoke\n\necho \"\u7ed3\u679c=$result\\n\";\n<\/code><\/pre>\n\n\n\n<p>\u5bf9\u8c61\u5f53\u51fd\u6570\u53bb\u8c03\u7528\u7684\u65f6\u5019\u4f1a\u89e6\u53d1invoke\u51fd\u6570\u6267\u884c<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__invoke \u88ab\u89e6\u53d1\n\u7ed3\u679c=7\n<\/code><\/pre>\n\n\n\n<p>toString()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nclass StrObj {\n\n public function __toString(): string {\n\n  echo \"__toString \u88ab\u89e6\u53d1&lt;br&gt;\";\n\n  return \"I am a string\";\n\n }\n\n}\n\n$o = new StrObj();\n\necho $o;\/\/ \u89e6\u53d1 __toString\n<\/code><\/pre>\n\n\n\n<p>\u5f53StrObj\u7c7b\u88ab\u5f53\u4f5c\u5b57\u7b26\u4e32\u8fdb\u884c\u4f7f\u7528\u7684\u65f6\u5019\u4f1a\u89e6\u53d1<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__toString \u88ab\u89e6\u53d1\nI am a string\n<\/code><\/pre>\n\n\n\n<p>call()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nclass Demo {\n\n public function __call($name, $args) {\n\n  echo \"__call \u88ab\u89e6\u53d1\uff1amethod=$name args=\" . json_encode($args, JSON_UNESCAPED_UNICODE) . \"\\n\";\n\n  return \"from __call\";\n\n }\n\n}\n\n$d = new Demo();\n\necho $d-&gt;noSuchMethod(1, \"a\") . \"\\n\";  \/\/ \u89e6\u53d1 __call\n<\/code><\/pre>\n\n\n\n<p>\u6b64\u5904\u4f7f\u7528$d\u53bb\u5b9e\u4f8b\u5316Demo\u7c7b\uff0c\u7136\u540e\u8ba9$d\u53bb\u8c03\u7528\u4e86\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u65b9\u6cd5noSuchMethod\u89e6\u53d1\u4e86call\u51fd\u6570<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__call \u88ab\u89e6\u53d1\uff1amethod=noSuchMethod args=&#91;1,\"a\"] from __call\n<\/code><\/pre>\n\n\n\n<p>callStatic()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass Demo {\n  public static function __callStatic($name, $args) {\n    echo \"__callStatic \u88ab\u89e6\u53d1\uff1amethod=$name args=\" . json_encode($args, JSON_UNESCAPED_UNICODE) . \"\\n\";\n    return \"from __callStatic\";\n  }\n}\n\necho Demo::noSuchStatic(\"x\") . \"\\n\";    \/\/ \u89e6\u53d1 __callStatic\n<\/code><\/pre>\n\n\n\n<p>\u540c\u6837\u7684\u5f53\u8c03\u7528\u4e0d\u53ef\u8bbf\u95ee\u6216\u8005\u4e0d\u5b58\u5728\u7684\u9759\u6001\u65b9\u6cd5\u7684\u65f6\u5019\u4f1a\u76f4\u63a5\u89e6\u53d1__callStatic\u6267\u884c<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__callStatic \u88ab\u89e6\u53d1\uff1amethod=noSuchStatic args=&#91;\"x\"] from __callStatic\n<\/code><\/pre>\n\n\n\n<p>get()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass User {\n  private $data = array(\n    \"name\" =&gt; \"\u5f20\u4e09\",\n  );\n  \n\n  public function __get($key) {\n    echo \"\u89e6\u53d1 __get\uff1a\u4f60\u6b63\u5728\u8bfb\u53d6\u5c5e\u6027 {$key}&lt;br&gt;\";\n    return $this-&gt;data&#91;$key];\n  }\n}\n\n$u = new User();\n\necho $u-&gt;name;  \/\/\u89e6\u53d1 __get\n<\/code><\/pre>\n\n\n\n<p>\u5f53\u8bfb\u4e00\u4e2a\u4e0d\u5b58\u5728\u6216\u4e0d\u53ef\u8bbf\u95ee\u7684\u5c5e\u6027\u65f6\u5019\u4f1a\u81ea\u52a8\u89e6\u53d1get()\u56e0\u4e3a\u6b64\u5904\u7684name\u662fprivate\u7c7b\u578b\u7684<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u89e6\u53d1 __get\uff1a\u4f60\u6b63\u5728\u8bfb\u53d6\u5c5e\u6027 name\n\u5f20\u4e09\n<\/code><\/pre>\n\n\n\n<p>set()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nclass Demo {\n\n private $data = &#91;];\n\n public $normal = \"init\";\n\n public function __set($name, $value) {\n\n  echo \"__set \u88ab\u89e6\u53d1\uff1a$name = \" . var_export($value, true) . \"&lt;br&gt;\";\n\n  $this-&gt;data&#91;$name] = $value;\n\n }\n\n}\n\n$d = new Demo();\n\n$d-&gt;token = \"abc\";\n\n$d-&gt;normal = \"cba\";\n\necho \"\u6b63\u5e38\u5c5e\u6027 normal \u7684\u503c\uff1a\" . $d-&gt;normal . \"&lt;br&gt;\";\n<\/code><\/pre>\n\n\n\n<p>\u5f53\u7ed9\u79c1\u6709\u7684token\u8d4b\u503c\u4e4b\u540e\u81ea\u52a8\u8c03\u7528\u4e86set()\u51fd\u6570\u4f46\u662f\u5f53\u7ed9\u516c\u5f00\u7684normal\u8d4b\u503c\u7684\u65f6\u5019\u5c31\u6b63\u5e38\u8f93\u51fa<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__set \u88ab\u89e6\u53d1\uff1atoken = 'abc'\n\u6b63\u5e38\u5c5e\u6027 normal \u7684\u503c\uff1acba\n<\/code><\/pre>\n\n\n\n<p>isset()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nclass Demo {\n\n private $data = &#91;\"token\" =&gt; \"abc\"];\n\n public function __isset($name): bool {\n\n  echo \"__isset \u88ab\u89e6\u53d1\uff1aname=$name\";\n\n  return $this-&gt;data&#91;$name];\n\n }\n\n}\n\n$d = new Demo();\n\nvar_dump(isset($d-&gt;token)); \/\/ \u89e6\u53d1 __isset\n\necho \"&lt;br&gt;\";\n\nvar_dump(empty($d-&gt;token)); \/\/ \u4e5f\u4f1a\u89e6\u53d1\n<\/code><\/pre>\n\n\n\n<p>\u5f53\u5bf9\u4e8e\u4e0d\u53ef\u8bbf\u95ee\u7684\u79c1\u6709\u5c5e\u6027\u8fdb\u884cisset\u548cempty\u7684\u65f6\u5019\u4f1a\u89e6\u53d1isset\u51fd\u6570<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__isset \u88ab\u89e6\u53d1\uff1aname=tokenbool(true)\n__isset \u88ab\u89e6\u53d1\uff1aname=tokenbool(true)\n<\/code><\/pre>\n\n\n\n<p>unset()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nclass Demo {\n\n private $data = &#91;\"token\" =&gt; \"abc\"];\n\n public function __unset($name) {\n\n  echo \"__unset \u88ab\u89e6\u53d1\uff1aname=$name\\n\";\n\n  unset($this-&gt;data&#91;$name]);\n\n }\n\n}\n\n$d = new Demo();\n\nunset($d-&gt;token);   \/\/ \u89e6\u53d1 __unset\n<\/code><\/pre>\n\n\n\n<p>\u4e0e\u4e0a\u540c\u7406<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__unset \u88ab\u89e6\u53d1\uff1aname=token\n<\/code><\/pre>\n\n\n\n<p>set_state\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nclass Demo {\n\n public $a;\n\n public function __construct($a) {\n\n  $this-&gt;a = $a;\n\n }\n\n public static function __set_state($props) {\n\n  echo \"__set_state \u88ab\u89e6\u53d1&lt;br&gt;\";\n\n  $obj = new self(isset($props&#91;'a']) ? $props&#91;'a'] : 0);\n\n  return $obj;\n\n }\n\n}\n\n$obj = new Demo(7);\n\n$code = var_export($obj, true);\n\necho \"var_export \u8f93\u51fa\uff1a&lt;pre&gt;{$code}&lt;\/pre&gt;\";\n\n\/\/\u8fd8\u539f\n\n$restored = eval('return ' . $code . ';'); \/\/ \u89e6\u53d1 __set_state\n\necho \"\u8fd8\u539f\u540e\u7684\u5bf9\u8c61\uff1a&lt;pre&gt;\";\n\nvar_dump($restored);\n\necho \"&lt;\/pre&gt;\";\n<\/code><\/pre>\n\n\n\n<p>\u5f53\u6267\u884cvar_export\u8be5\u9759\u6001\u65b9\u6cd5set_state()\u4f1a\u88ab\u8c03\u7528\uff0c\u6b64\u5904\u7684var_export()\u662f\u628a\u5bf9\u8c61\u5bfc\u51fa\u6210\u4e00\u6bb5\u53ef\u6267\u884c\u7684 PHP \u4ee3\u7801\uff0c\u7136\u540e\u7528eval\u53bb\u6267\u884c\u4e86code\u4f1a\u8fd8\u539f\u5bf9\u8c61<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var_export \u8f93\u51fa\uff1a\n\nDemo::__set_state(array(\n   'a' =&gt; 7,\n))\n\n__set_state \u88ab\u89e6\u53d1\n\u8fd8\u539f\u540e\u7684\u5bf9\u8c61\uff1a\n\nobject(Demo)#2 (1) {\n  &#91;\"a\"]=&gt;\n  int(7)\n}\n<\/code><\/pre>\n\n\n\n<p>clone()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass Demo {\n  public int $x = 1;\n\n  public function __clone() {\n    echo \"__clone \u88ab\u89e6\u53d1\\n\";\n    $this-&gt;x++;\n  }\n}\n\n$a = new Demo();\n$b = clone $a;          \/\/ \u89e6\u53d1 __clone\necho \"a-&gt;x={$a-&gt;x}, b-&gt;x={$b-&gt;x}\\n\";\n<\/code><\/pre>\n\n\n\n<p>\u6b64\u5904\u7684clone\u51fd\u6570\u4e3b\u8981\u7528\u4e8ePHP\u4ee3\u7801\u7684\u5bf9\u8c61\u590d\u5236\uff0c\u5f53\u4f7f\u7528clone\u53bb\u590d\u5236\u7684\u65f6\u5019\u4f1a\u81ea\u52a8\u8c03\u7528clone()\u51fd\u6570<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__clone \u88ab\u89e6\u53d1 a-&gt;x=1, b-&gt;x=2\n<\/code><\/pre>\n\n\n\n<p> __autoload()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nerror_reporting(0);\n\nfunction __autoload($class) {\n\n echo \"__autoload \u88ab\u89e6\u53d1\uff1aclass=$class\\n\";\n\n}\n\nnew NotExistsClass(); \/\/ \u89e6\u53d1 __autoload\n<\/code><\/pre>\n\n\n\n<p>\u5f53\u52a0\u8f7d\u672a\u5b9a\u4e49\u7684\u7c7b\u7684\u65f6\u5019\u4f1a\u81ea\u52a8\u8c03\u7528<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>autoload \u88ab\u89e6\u53d1\uff1aclass=NotExistsClass\n<\/code><\/pre>\n\n\n\n<p>debugInfo()\u51fd\u6570\u6848\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nclass Demo {\n\n public $secret = \"top_secret\";\n\n public function __debugInfo(): ?array {\n\n  echo \"__debugInfo \u88ab\u89e6\u53d1&lt;br&gt;\";\n\n  return &#91;\"secret\" =&gt; \"abc\", \"note\" =&gt; \"cba\"];\n\n }\n\n}\n\n$d = new Demo();\n\nvar_dump($d); \/\/ \u89e6\u53d1 __debugInfo\n<\/code><\/pre>\n\n\n\n<p>\u5f53\u4f7f\u7528var_dump\u51fd\u6570\u7684\u65f6\u5019\u4f1a\u81ea\u52a8\u8c03\u7528debugInfo()\u9b54\u672f\u65b9\u6cd5<\/p>\n\n\n\n<p>\u6267\u884c\u8f93\u51fa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>__debugInfo \u88ab\u89e6\u53d1\nobject(Demo)#1 (2) { &#91;\"secret\"]=&gt; string(3) \"abc\" &#91;\"note\"]=&gt; string(3) \"cba\" }\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>PHP\u53cd\u5e8f\u5217\u5316\u57fa\u7840 \u6982\u5ff5 \u5e8f\u5217\u5316\uff1a\u4f7f\u7528serialize()\u53ef\u4ee5\u5c06\u5bf9\u8c61\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\u7684\u5f62\u5f0f O:4:&#038;#8221 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[4,3],"tags":[],"class_list":["post-17","post","type-post","status-publish","format-standard","hentry","category-php","category-3"],"_links":{"self":[{"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/posts\/17","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/comments?post=17"}],"version-history":[{"count":1,"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/posts\/17\/revisions"}],"predecessor-version":[{"id":18,"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/posts\/17\/revisions\/18"}],"wp:attachment":[{"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/media?parent=17"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/categories?post=17"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.miren.baby\/index.php\/wp-json\/wp\/v2\/tags?post=17"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}