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

 

 

 

posted @ 2020-04-23 14:22  Jun柏林  阅读(57)  评论(0)    收藏  举报