您的位置:首页 > 编程语言 > PHP开发

为什么 PHP 中 this 和 self 访问变量的写法不一样?

2017-08-22 00:00 316 查看
self是关键字,而$this是一个变量,表示当前对象,也就是你能直接把$this返回实现链式调用.

$this->foo也是一个变量,表示当前对象里名为foo的成员.

而self::$foo表示类里面名为foo的变量.

self其实就相当于类名,parent相当于父类名,都是在类里面使用的关键字.

<?php
class foo {
const a = '类的常量'; // PHP 5.3
public static $b = '类的静态变量';
public $c = '对象的变量';
// 类的普通方法既能访问静态变量,也能访问普通变量.
// 而类的静态方法不能访问类的非静态变量和非静态方法.
public function bar() {
return array(
self::a,
self::$b,
$this->c
);
}
}
$foo = new foo();
echo foo::a  . "\n"; // 类的常量
echo foo::$b . "\n"; // 类的静态变量
echo $foo->c . "\n"; // 对象的变量
var_export($foo->bar()); // 输出:

输出的内容如下:

array (
0 => '类的常量',
1 => '类的静态变量',
2 => '对象的变量',
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: