abstract:/基类 class Person { /** * public protected private 为不同的访问限制 * public 本类 ,子类&
/基类 class Person { /** * public protected private 为不同的访问限制 * public 本类 ,子类 ,外部都可以访问 * protected 本类 子类 可以访问,外部不能访问 * private 私有 ,只有自己可以访问 * * 访问范围和java 一样 * */ public $name; protected $age; private $money; static $work = ' php 程序员'; //static 修饰的 属性和方法为 静态属性或者方法 ,属于类,不属于任何实例 /** * Person constructor. * @param $name * @param $age * @param $money * 类的构造方法 */ public function __construct($name, $age, $money) { $this->name = $name; $this->age = $age; $this->money = $money; } public function showMe() { echo '我叫 :' . $this->name . ' 我今年 ' . $this->age . ' 我资产 ' . $this->money; } //静态方法的定义 public static function work() { //访问类中静态属性的方法 self:: ,类名:: ,static :: //self和 类名在有继承关系 的类中 ,不能动态 根据实例的类动态分配 同名的属性值, //子类和父类有同名的属性 访问必须用static 来限定,(后期静态绑定,由调用者决定 输出) // echo '我的工作是 '.self::$work; // echo '我的工作 '.Person::$work; echo '我的工作是 ' . static::$work; //后期静态绑定 } //重载 当调用类中不存在的方法,会自动调用__call()方法 public function __call($name, $arguments) { // TODO: Implement __call() method.处理重载逻辑 // 1.判断参数个数 $num = count($arguments); //2.判断方法存在 if($name == 'study'){ if(method_exists($this,$f='study'.$num)){ //对应参数存在就调用 call_user_func_array([$this,$f],$arguments); } } } public function study1($name) { echo '调用了1个参数的study 方法'; } public function study2($name, $name2) { echo '调用了2个参数的study 方法'; } public function study3($name, $name1, $name2) { echo '调用了3个参数的study 方法'; } } //trait 类 trait Dog{ public function show(){ echo '我是个小狗'; } public function work(){ echo '我的工作是看家'; } } //trait 类 trait Cat{ public function show(){ echo '我是个小猫'; } public function work(){ echo '我的工作是卖萌。。。'; } } // 基类 子类 trait 三个有同名方法时 , 子类调用同名方法 访问的 优先级 子类>trait>父类 //继承 类 class XiaoMing extends Person{ //多个 trait 类 以及 有方法重名 处理 use Dog,Cat{ Dog::work insteadof Cat; //Dog ->work 方法替代 cat->work Cat::work as workC; //Cat ->wor 取别名 workC 调用=> (new Cat())->workC(); } public function work(){ echo '我是小明,我的工作 是学习'; } } //实例化类 $p = new Person('狗蛋', 20, '100w'); //调用类的方法 $p->showMe(); echo '<br>'; //访问 静态方法 Person::work(); echo '<br>'; //访问属性 Person::$work; //重载调用 $p->study('张三'); echo '<br>'; $p->study('张三','李四');
Correcting teacher:韦小宝Correction time:2018-11-14 09:19:30
Teacher's summary:嗯!写的很不错!不过课后还得记得多多练习啊!!加油吧!!