php static 和self区别
Posted 雨落知音
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php static 和self区别相关的知识,希望对你有一定的参考价值。
static(关键字) 类似于 self(关键字) , 但它指向的是被调用的类(Document) 而不是包含类(DomainObject) , static 和 self 的区别:
<?php class DomainObject{ public static function createStatic(){ return new static(); } public static function createSelf(){ return new self(); } } class User extends DomainObject{ } class Document extends DomainObject{ } echo ‘<pre>‘; var_dump( Document::createStatic()); var_dump( Document::createSelf()); Result: object(Document)[1] object(DomainObject)[1]
以前你这么写:
abstract class DomainObject{ } class User extends DomainObject{ public static function create(){ return new User(); } } class Document extends DomainObject{ public static function create(){ return new Document(); } }
现在这么写
abstract class DomainObject{ public static function create(){ return new static(); } } class User extends DomainObject{ } class Document extends DomainObject{ }
好处: 可以节省大量重复代码~
以上是关于php static 和self区别的主要内容,如果未能解决你的问题,请参考以下文章
php 小知识随手记 new self() 和new static()作用和区别
PHP static 关键字和 self 关键字实例化的区别
PHP 中的 self::$bar 和 static::$bar 有啥区别?