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