批改状态:合格
老师批语:原来你写代码全靠运气, 看来你的运气不错
<?php//trait 功能与语法//Trait 和一个类相似,但仅仅旨在用细粒度和一致的方式来组合功能。Trait 不能通过它自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用类的成员不需要继承。trait Demo{protected $name="张冠李戴";static $age;abstract function Test();}class Demo1{//引入关键字 useuse Demo;function Test(){echo Demo::$age;}}$demo1=new Demo1;//给静态变量赋值Demo::$age=33;$demo1->Test();
<?php//trait:代码复用//get_class_vars — 返回由类的默认属性组成的数组trait tDemo{function con(){$cl=get_class_vars(__CLASS__);printf('<pre>%s</pre>',print_r($cl,true));}}class Demo{use tDemo;protected $Title='百度';public $Http='https://baidu.com';public function baidu(){echo $this->Title,"--的网址是:".$this->Http,"<br>";}}$demo=new Demo;$demo->baidu();$demo->con();class Demo1{use tDemo;protected $Title='百度';public $Http='https://baidu.com';public $arr=[1,2,3,[4,5,6,[7,8,9]]];public function baidu(){echo $this->Title,"--的网址是:".$this->Http,"<br>来个数组:",printf('<pre>%s<pre>',print_r(($this->arr),true));}}$demo1=new Demo1;$demo1->con();$demo1->baidu();
<?php// trait2: 在继承上下文环境中, 具有优先级, 通过优先的设置, 降低单继承的影响//这个优先级可以替换同名函数trait tDemo{function test(){//输出trait的方法echo 'son访问到了trait方法是:',__METHOD__;}}class Dad{function test(){echo 'son访问到了class方法是:',__METHOD__;}}class Son extends Dad{use tDemo;}$son=new Son;$son->test();
<?php//trait组合实现功能扩展//功能扩展:trait tDemo1{function class_name(){//格式化打印类中属性$class_name=get_class_vars(__CLASS__);printf('<pre>%s</pre>',print_r($class_name,true));}}trait tDemo2{function method_name(){//格式化打印类中方法$method_name=get_class_methods(__CLASS__);printf('<pre>%s</pre>',print_r($method_name,true));}}//或更多traitclass Test{use tDemo1,tDemo2;//同时引入public $name="手机";public $price=2000;}$test=new Test;$test->class_name();//调用函数,打印出当前类中的属性$test->method_name();//或者:trait tDemo3{use tDemo1,tDemo2;function mar(){}public static function test(){}abstract public function abtest();public $address='地球';public $type='外星人';}class Test1{use tDemo3;public $age=3000;public function abtest(){}}$test1=new Test1;$test1->class_name();$test1->method_name();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号