类常量的定义和静态常量的定义和调用
<?php
//定义常量
define(\'MYNUM\', 100);
if(!defined(\'MYNUM\')){
define(\'MYNUM\', 200);
}
//echo MYNUM;
class MyObject{
//定义类中的常量
const NUM = 10000;
//定义类中的静态变量
static $num = 100;
protected $name;
public function __construct($name)
{
$this->name = $name;
}
function desc(){
echo $this->name.\'--\';
// $this只能访问类中的变量和函数
// echo $this->NUM;
//在类的内部访问类中的常量只能使用self关键字
echo self::NUM.\'--\';
//在类的内部访问类中的静态变量只能使用self关键字
echo self::$num;
//非静态的函数可以直接调用静态函数方法
self::desc2();
}
static function desc2(){
// 伪变量 $this 在静态方法中不可用
// 因为调用静态函数方法不需要创建类的实例化对象
// $this->desc();
echo \'====调用了类的静态函数方法====\';
}
}
$test = new MyObject(\'李四\');
$test->desc();
echo \'<br><br>\';
// 如果需要在类的外部来直接访问类中的常量,那么直接使用类名
echo \'类的外部范围类中的常量:\'.MyObject::NUM.\'--\'.MyObject::$num;
echo \'<br><br>\';
// 也可以使用该类的实例化的对象来访问类中的常量
echo $test::NUM;
// 从PHP5.3.0开始才能使用下面的访问方式
echo $test::$num;
echo \'<br><br>\';
$test::$num = 200;
echo \'改变后的静态变量:\'.$test::$num;
echo \'<br><br>\';
//静态变量比较特殊,它是被放置在计算机内存的静态区当中
// 静态变量只要调用了该类就会被创建
// 且对于一个类来说,每个静态变量只会在内存中保持一个
$a = new MyObject(\'哈哈\');
echo $a::$num;
echo \'<br>\';
echo \'<br><br>\';
echo \'静态方法的外部访问:\';
// 使用类名+范围解析操作符+静态函数方法名
MyObject::desc2();
$a->desc2(); // 这样的方式来访问静态资源,不推荐
$a::desc2();