前言

本文主要介绍了新的自(新)与新静态(PHP)在面向对象中的区别。这两种方法有什么区别下面的话不多说,大家一起来看看详细的介绍。

区别如下:

首先,结论是,在PHP中,自我指向定义当前调用方法的类,以及指向调用当前静态方法的类的静态点。

然后用一个例子来证明上述结果。


班上的一个
{
公共静态_a美元= ' ';

公共静态函数echoproperty()
{
回声自::_a php_eol美元;
}
}

B类扩展
{
公共静态_a美元= ' B ';
}

$ obj =新的B();
B::echoproperty(A类); / /输出


这是因为自我的静态参考:或__class__当前类取决于被调用的方法中定义的类、方法和echoproperty以上课改:


班上的一个
{
公共静态_a美元= ' ';

公共静态函数echoproperty()
{
回波静态::_a php_eol美元;
}
}
/ /呼叫B:再次:echoproperty将output'class B


为了避免看到上面的第一个例子重写父类的子类的静态属性,使用静态属性的方法的继承还是访问父类,PHP5.3增加了一个新的语法:后期静态绑定(后期静态绑定),使用static关键字替换这个自我,静get_called_class()将返回一类,即类调用静态方法,访问静态方法的关键是有效的。

下面的示例更好地说明了新的自()和新静态(后者使用PHP后期静态绑定指向调用方法的当前类)之间的区别。


班上的一个
{
公共静态函数get_self()
{
返回新的自我();
}

公共静态函数get_static()
{
返回新静态();
}
}

类B扩展{ }

回声get_class(B:get_self)(); / /
回声get_class(B:get_static)(); / / B
回声get_class(::get_self)(); / /
回声get_class(::get_static)(); / /


总结

以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一定的帮助。如果有任何疑问,您可以留言交流,谢谢您的支持。