1 class product{ 2 public static function create(){ 3 return new static(); 4 } 5 } 6 7 class food extends product{ 8 9 } 10 11 var_dump(food::create()); 12 //food::out();
以上代码输出:object(food)#1 (0) { }
class product{ public static function create(){ return new self(); } } class food extends product{ } var_dump(food::create());
以上代码输出:object(product)#1 (0) { }
一个self和static的区别,self是解析上下文,而不是引用上下文。在PHP 5.3中的新特性,延迟绑定,static类似于self,但它指的是被调用的类而不是包含类。