php
第十章.类的构造方法与析构方法 __construct()和__destruct()。
1 <?php 2 //构造方法:是用来实例化类,创建对象的。 3 class Staff //声明一个员工类 4 { 5 public $name; //姓名 6 public $age;//年龄 7 public $salary;//月薪 8 //构造方法使用固定的方法名:__construct() 9 public function __construct($name,$age,$salary) 10 { 11 //构造方法:通常是用来初始化对象中的属性 12 $this->name = $name; 13 $this->age = $age; 14 $this->salary = $salary; 15 } 16 public function __destruct() 17 { 18 echo'<hr>'; 19 //析构方法:对象销毁时自动调用,没有参数, __destruct() 20 echo '当前对象被销毁了~~'; 21 } 22 } 23 24 //创建一个对象,来访问类中的属性 25 $obj = new Staff('peter',25,3500); 26 echo '姓名:'.$obj->name; 27 echo '<hr>'; 28 echo '年龄:'.$obj->age; 29 echo '<hr>'; 30 echo '月薪:'.$obj->salary; 31 //销毁变量,使用unset()方法 32 unset($obj);
10.10.类的静态绑定与延迟绑定技术,self.parent.static.
1 <?php 2 class Demo1 3 { 4 public static $name= 'peter'; 5 public static $salary= 3000; 6 public static function show() 7 { 8 //self::与Demo1类静态绑定 9 return self::$name;//访问本类的静态属性self::就是当前类 10 //return static::$name;//访问本类的静态属性static::就是当前类 11 } 12 } 13 class Demo2 extends Demo1 14 { 15 public static $sex = 'male'; 16 public static function display() 17 { 18 //parent::与父类进行静态绑定,srlf::与Demo2类静态绑定 19 return parent::$name.'的工资是:'.parent::$salary; 20 //return parent::$name.'的工资是:'.parent::$salary.'性别:'.self::$sex; 21 } 22 } 23 //echo '姓名是:'.Demo1::$name;//在外部放问类中静态绑定 24 echo'<hr>'; 25 echo '姓名是:'.Demo1::show();//在外部访问类中的静态属性 26 echo'<hr>'; 27 echo Demo2::display();
10.12.访问一个不存在的方法或静态方法,应该怎么办呢?
1 <?php 2 class Demo 3 { 4 //第一个参数是方法名,第二个参数是方法参数,以数组形式传入 5 public function __call($method,$args)//调用的魔术方法叫call,在类的外部调用一个不存在的方法时就会自动执行这个魔术方法,call的魔术方法有两个参数, 6 第一个是$method调用的方法名,第二个是$args调用这个方法它的参数列表 7 //遍历参数$args 8 { 9 $var = '';//将遍历好的参数拼接好一个字符串返回 10 foreach ($args as $value){ 11 $var .= $value.','; // .=字符串的连接运算 12 } 13 return '方法是'.$method.'('.$var.')'.'不存在'; 14 } 15 //当我们调用一个不存在的静态方法是,会自动调用 __callStatic() 16 // 17 public static function __callStatic($method,$args) 18 { 19 $var = ''; 20 foreach ($args as $value){ 21 $var .= $value.','; 22 } 23 return '静态方法是'.$method.'('.$var.')'.'不存在'; 24 } 25 } 26 echo (new Demo)->hello('scscsc','scscsvs'); 27 echo'<hr>'; 28 //当访问一个不存在的非静态方法是,自动调用类中的魔术方法:__callstatic() 29 echo Demo::hello(10,20,30);

浙公网安备 33010602011771号