php中self要害字的用法是:一、代替类名,援用以后类的动态成员变量以及动态函数;二、克制多态行为,援用以后类的函数而非子类中笼罩的完成。self老是指向以后类(及类实例)。
用法:
self老是指向“以后类(及类实例)”。
具体引见:
一、代替类名,援用以后类的动态成员变量以及动态函数;
二、克制多态行为,援用以后类的函数而非子类中笼罩的完成;
上面咱们经过实例来与 parent 、 static 和 this进行比照。
parent
self 与 parent 的区别比拟容易: parent 援用父类/基类被隐盖的办法(或变量), self则援用本身办法(或变量)。例如结构函数中挪用父类结构函数:
class Base { public function __construct() { echo "Base contructor!", PHP_EOL; } } class Child { public function __construct() { parent::__construct(); echo "Child contructor!", PHP_EOL; } } new Child; // 输入: // Base contructor! // Child contructor!
static
static 惯例用处是润饰函数或变量使其成为类函数以及类变量,也能够润饰函数内变量延伸其生命周期至整个使用顺序的生命周期。然而其与 self 联系关系上是PHP 5.3以来引入的新用处:动态提早绑定。
有了 static 的动态提早绑定性能,能够正在运转时静态确定归属的类。例如:
class Base { public function __construct() { echo "Base constructor!", PHP_EOL; } public static function getSelf() { return new self(); } public static function getInstance() { return new static(); } public function selfFoo() { return self::foo(); } public function staticFoo() { return static::foo(); } public function thisFoo() { return $this->foo(); } public function foo() { echo "Base Foo!", PHP_EOL; } } class Child extends Base { public function __construct() { echo "Child constructor!", PHP_EOL; } public function foo() { echo "Child Foo!", PHP_EOL; } } $base = Child::getSelf(); $child = Child::getInstance(); $child->selfFoo(); $child->staticFoo(); $child->thisFoo();
顺序输入后果以下:
正在函数援用上, self 与 static 的区分是:关于动态成员函数, self 指向代码以后类, static 指向挪用类;关于非动态成员函数, self 克制多态,指向以后类的成员函数, static 同等于 this ,静态指向挪用类的函数。
更多相干常识,能够拜访资源魔。
以上就是php中self要害字的用法是甚么的具体内容,更多请存眷资源魔其它相干文章!
标签: php php教程 self php故障解决 php使用问题
抱歉,评论功能暂时关闭!