批改状态:合格
老师批语:
作业内容:1、练习课上所学知识
static
<?phpclass A{// 静态成员变量public static $num;// 静态成员方法public static function AddNum(){self::$num++;}public function MyAddNum(){// $this->num++; //这句是错的。不能这样调用静态成员变量self::$num++;}public static function ShowNum(){echo self::$num;}}$a = new A();$a->MyAddNum(); // 能过普通方法改变静态成员变量A::ShowNum(); // 调用静态成员方法,输出1$b = new A();$b->MyAddNum();A::ShowNum(); // 输出2
abstract
<?php// 抽象类abstract class A{abstract public function say();}//继承抽象类,要把抽象类的方法重写class B extends A{public function say(){echo '说话';}}$b = new B();$b->say();
const
class A{const APP_NAME = '常量';public function get_name(){return self::APP_NAME;}}// 外部访问方法echo A::APP_NAME;$a = new A();echo $a->get_name();
接口里,只允许声明2个成员:1、常量;2、抽象方法
关键词:interface声明接口,implements使用接口
interface File{// 抽象方法public function a();public function b($x,$y);}
class Teacher implements File{public function a(){//...}}
也叫延迟静态绑定,关键词:static,取代静态self
<?phpclass A{public static function test(){echo 'A - test()';}public function show1(){return self::test();}public function show2// 后期延迟绑定return static::test();}}class B extends A{public static function test(){echo 'B - test()';}}$a = new A();$b = new B();$a->show1(); // A - test()$b->show1(); // A - test()$a->show2(); // A - test()$b->show2(); // B - test()
__construct 构造方法,在new类的时候,自动执行
__destruct 析构方法,在类注销(执行结束)的时候,自动执行
类遵循先进后出的原则,如下示例:
<?phpclass A{public $n;public function __construct($n){$this->n = $n;echo $this->n.'构造<br>';}public function __destruct(){echo $this->n.'析构<br>';}public function __get($name){echo $this->$name;}}$a = new A('a');$b = new A('b');
输出:
a构造b构造b析构a析构
__get,获取不可见和未定义的属性,触发这个魔术方法
__set,修改成员变量的时候,触发
__call,有两个参数
public function __call($key, $value){// $key => 对应调用的方法名;// $value => 对应的参数;}
__callStatic
public static function __callStatic($key, $value){// $key => 对应调用的方法名;// $value => 对应的参数;}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号