企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
# self、static、parent:后期静态绑定 ``` <pre class="calibre29">``` self就是写在哪个类里面<span class="token3">,</span> 实际调用的就是这个类<span class="token3">.</span> static代表使用的这个类(当前是实例化的那个类)<span class="token3">,</span> 就是你在父类里写的static<span class="token3">,</span>然后被子类覆盖,使用的就是子类的方法或属性 大概意思是说self调用的就是本身代码片段这个类,而static调用的是从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类,例子比较容易明白些。 <span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span><span class="token1">--</span> class <span class="token4">Person</span> <span class="token3">{</span> public static <span class="token5">function</span> <span class="token4">name</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">"Person的name方法<br />"</span><span class="token3">;</span> <span class="token3">}</span> public static <span class="token5">function</span> <span class="token4">callself</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> self<span class="token3">:</span><span class="token3">:</span><span class="token4">name</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//php高版本过时建议使用</span> <span class="token">//(new self())->name();</span> <span class="token3">}</span> public static <span class="token5">function</span> <span class="token4">callstatic</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> static<span class="token3">:</span><span class="token3">:</span><span class="token4">name</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> class <span class="token4">Man</span> extends <span class="token4">Person</span> <span class="token3">{</span> <span class="token">//重写父类方法</span> public static <span class="token5">function</span> <span class="token4">name</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">"Man的name方法<br />"</span><span class="token3">;</span> <span class="token3">}</span> public static <span class="token5">function</span> <span class="token4">callparent</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> parent<span class="token3">:</span><span class="token3">:</span><span class="token4">name</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> Man<span class="token3">:</span><span class="token3">:</span><span class="token4">callself</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//Person的name方法</span> Man<span class="token3">:</span><span class="token3">:</span><span class="token4">callstatic</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//Man的name方法</span> Man<span class="token3">:</span><span class="token3">:</span><span class="token4">callparent</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//Person的name方法</span> Person<span class="token3">:</span><span class="token3">:</span><span class="token4">callself</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//Person的name方法</span> Person<span class="token3">:</span><span class="token3">:</span><span class="token4">callstatic</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//Person的name方法</span> Person<span class="token3">:</span><span class="token3">:</span><span class="token4">callparent</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//致命错误 parent必须写到子类方法里</span> ``` ```