seft和static在php中有什么不同
seft和static返回的结果是否相同?
不尽然。但我不知道在php5.2中是怎么样的。
self指的是定义产生new操作的方法的那个类(定义那个方法的类)。
static在php5.3以后静态绑定指的是你在哪个层次中调用方法的类(实际调用的类)。
在下面的例子中,我们可以更好的理解。B从A继承两个方法。seft界定为A因为他是定义在A类的第一个方法的执行中的,然而 static 是界定在调用他的类的内的(查看get_called_class())。
class A {
    public static function get_self() {
        return new self();
    }
    public static function get_static() {
        return new static();
    }
}
class B extends A {}
echo get_class(B::get_self());  // A
echo get_class(B::get_static()); // B
echo get_class(A::get_static()); // A
近期文章
- 织梦5.7{dede:php}标签不起作用的解决办法
 - php版本non-thread-safe和thread-safe的区别
 - 什么是fatal flex scanner internal error--end of buffer missed
 - php文件命名建议用小写
 - php cookie字典
 - seft和static在php中有什么不同
 - 用php快速获取图片大小
 - 用php的json_decode()检测json数据是否合法
 - php三个等号
 - unset和=null有什么不同
 - php如何捕获一个警告信息
 - 如何获得php数组中最后一个元素的键名?
 - 在PHP中,你如何改变数组中某一元素的键名?
 - php多维数组转xml
 - php如何转化数组为SimpleXML对象
 - php如何把数组定义为常量
 - php根据数组中的值删除数组中的元素
 - 计算两个日期相差多少天
 - 如何捕获var_dump的输出结果保存到一个字符串中?
 - 用php获取完整的URL