PHP 类的属性与方法
PHP 类的属性
与 方法
在PHP类中,最基本的两个成员就是 属性 和 方法。类的属性和方法存在于不同的“命名空间”中,这意味着同一个类的属性和方法可以使用同样的名字。在类中访问属性和调用方法使用同样的操作符,具体是访问一个属性还是调用一个方法,取决于你的上下文,即用法是变量访问还是函数调用。
例如:
<?php
class Foo
{
public $bar = 'property';
public function bar() {
return 'method';
}
}
$obj = new Foo();
echo $obj->bar, PHP_EOL, $obj->bar(), PHP_EOL;
执行上面程序会输出:
property
method
这意味着,如果你的类属性被分配给一个 匿名函数 你将无法直接调用它。因为访问类属性的优先级要更高,在此场景下需要用括号包裹起来调用。
属性
类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 public
,protected
或者 private
开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指 PHP 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。
有关 public
,protected
和 private
的更多详细信息,请查看访问控制 。
注意: 为了向后兼容 PHP 4,PHP 5 声明属性依然可以直接使用关键字 var 来替代(或者附加于)public,protected 或 private。但是已不再需要 var 了。在 PHP 5.0 到 5.1.3,var 会被认为是废弃的,而且抛出 E_STRICT 警告,但是 5.1.3 之后就不再认为是废弃,也不会抛出警告。 如果直接使用 var 声明属性,而没有用 public,protected 或 private 之一,PHP 5 会将其视为 public。
示例
声明类的属性
<?php
class SimpleClass
{
// 错误的属性声明
public $var1 = 'hello ' . 'jiyik';
public $var2 = <<<EOF
hello world
EOF;
public $var3 = 1+2;
public $var4 = self::myStaticMethod();
public $var5 = $myVar;
// 正确的属性声明
public $var6 = myConstant;
public $var7 = array(true, false);
// 在 PHP 5.3.0 及之后,下面的声明也正确
public $var8 = <<<EOF
hello world
EOF;
}
?>
方法
在类中通过 function
关键字定义的函数叫做类的 方法
。 和属性一样,方法也是由 public
、protected
和private
进行控制。方法是对象对外提供功能的输出口,可以说是一个对象的核心,如果一个类中没有定义方法,那这个类是不完整的。
示例
下面我们看一下方法的定义和使用
<?php
class Web
{
public $web = "迹忆客";
private $url = "";
public function __construct($url)
{
$this->url = $url;
}
public function show()
{
echo "你好,",$this->web,"<br />";
echo "你的网址: ", $this->url;
}
}
$web = new Web("https://www.jiyik.com");
$web->show();
以上程序输出结果:
你好,迹忆客
你的网址:https:/www.jiyik.com
在PHP类中的方法除了像上面我们可以自己通过 function 定义的方法之外,PHP还提供了很多的魔术方法。 所谓魔术方法就是在这个类或者该类实例化出来的对象进行某种操作的时候自动执行的方法。当然,我们也可以在类中通过重写的方式使其按照我们的想法来实现某些功能,但是方法名一定要相同。例如上面示例中的 __construct 方法。 可以参考 魔术方法 一章。