02-看官方文档学PHP面向对象-属性和类常量

属性

  1. 属性声明是由关键字 publicprotected 或者 private 开头,然后跟一个普通的变量声明来组成
  2. 属性中的变量可以初始化,但是初始化的值必须是常数
  3. 常数是指 PHP 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。
  1. 为了向后兼容 PHP 4PHP 5 声明属性依然可以直接使用关键字 var 来替代 publicprotectedprivate
  2. 在 PHP 5.0 到 5.1.3,var 会被认为是废弃的,而且抛出 E_STRICT 警告,但是 5.1.3 之后就不再认为是废弃,也不会抛出警告。
  3. 如果直接使用 var 声明属性,而没有用 public,protected 或 private 之一,PHP 5 会将其视为 public。

public,protected 和 private 的更多详细信息

->是对象运算符,可以用于调用方法,访问动态属性,如:

访问动态属性:$this->property,其中property$this对象的属性名

访问静态熟悉:self::$property,静态熟悉用::来访问.

静态属性与非静态属性的区别

当一个方法在类定义内部被调用时,有一个可用的伪变量 $this

<?php
class SimpleClass
{
// 错误的属性声明,初始化的值必须是常数
// 常数是指 `PHP` 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。
public $var1 = 'hello ' . 'world';
public $var2 = <<<EOD
hello world
EOD;
public $var3 = 1+2;
public $var4 = self::myStaticMethod();
public $var5 = $myVar;

// 正确的属性声明
public $var6 = myConstant;
public $var7 = array(true, false);

//在 PHP 5.3.0 及之后,下面的声明也正确 这种写法是 PHP 5.3.0 以后加入的
public $var8 = <<<'EOD'
hello world
EOD;
}
?>

类常量

  1. 可以把在类中始终保持不变的值定义为常量。
  2. 在定义和使用常量的时候不需要使用 $ 符号。
  3. 常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。
  4. 接口(interface)中也可以定义常量。
  5. 自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。

Example #1 定义和使用一个类常量

<?php
class MyClass
{
const constant = 'constant value'; // 定义类常量

function showConstant() {
echo self::constant . "\n";
}
}

echo MyClass::constant . "\n";

$classname = "MyClass";
echo $classname::constant . "\n"; // 自 5.3.0 起,用一个变量来动态调用类

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n"; // 自 PHP 5.3.0 起
?>

Example #2 静态数据示例

和 heredoc 不同,nowdoc 可以用在任何静态数据中。

<?php
class foo {
// 自 PHP 5.3.0 起
const bar = <<<'EOT' // nowdoc 可以用在任何静态数据中
bar
EOT;
}
?>
0%