最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

php中self关键字的用法是什么

来源:动视网 责编:小采 时间:2020-11-02 18:48:46
文档

php中self关键字的用法是什么

php中self关键字的用法是什么:php中self关键字的用法是:1、替代类名,引用当前类的静态成员变量和静态函数;2、抑制多态行为,引用当前类的函数而非子类中覆盖的实现。self总是指向当前类(及类实例)。用法:self总是指向当前类(及类实例)。详细介绍:1、替代类名,引用当前类的静
推荐度:
导读php中self关键字的用法是什么:php中self关键字的用法是:1、替代类名,引用当前类的静态成员变量和静态函数;2、抑制多态行为,引用当前类的函数而非子类中覆盖的实现。self总是指向当前类(及类实例)。用法:self总是指向当前类(及类实例)。详细介绍:1、替代类名,引用当前类的静


用法:

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();

程序输出结果如下:

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

更多相关知识,可以访问gxlcms。

文档

php中self关键字的用法是什么

php中self关键字的用法是什么:php中self关键字的用法是:1、替代类名,引用当前类的静态成员变量和静态函数;2、抑制多态行为,引用当前类的函数而非子类中覆盖的实现。self总是指向当前类(及类实例)。用法:self总是指向当前类(及类实例)。详细介绍:1、替代类名,引用当前类的静
推荐度:
标签: 中的 使用 用法
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top