php中self使用,php中self关键字的使用方法

php中self关键字的使用方法

发布时间:2020-07-01 10:55:27

来源:亿速云

阅读:53

作者:Leah

这期内容当中小编将会给大家带来有关php中self关键字的使用方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

用法:

self总是指向“当前类(及类实例)”。

详细介绍:

1、替代类名,引用当前类的静态成员变量和静态函数;

2、抑制多态行为,引用当前类的函数而非子类中覆盖的实现;

下面我们通过实例来与 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();

程序输出结果如下:

a06e2a4219d4e50dc48cbbe07ec6f3ee.png

在函数引用上, self 与 static 的区别是:对于静态成员函数, self 指向代码当前类, static 指向调用类;对于非静态成员函数, self 抑制多态,指向当前类的成员函数, static 等同于 this ,动态指向调用类的函数。

上述就是小编为大家分享的php中self关键字的使用方法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值