批改状态:合格
老师批语:
其他
案例源码
<?phpuse _0815\D;use _0815\Demo2 as _0815Demo2;use _0815\Demo3;use Demo2 as GlobalDemo2;namespace six;class Demo {private $data = ['a'=>'结果1','b'=>'结果2','c'=>'结果3'];private $data2 = '这仅仅是个测试';public $text = '10';public $text2 = '20';protected $text3 = '30';// 访问数组中的单值public function __get($name){if(array_key_exists($name,$this->data)){return $this->data[$name]; // 访问数组的元素,数组名不需要加'$';}else{// 访问数组,或者访问单值return $this->data2;}// return array_key_exists($name,$this->data)? $this->data[$name] : return $this->data2;}}$getData = new Demo;// echo $getData->b;echo $getData->a.'<hr>';echo $getData->data4.'<hr>';// 统一个类中无法反复声明__get()函数,引用不同的数据类型可以使用新增类,或者定义一个子类,// 通过继承父类的protected,public,方法,构造方法(需要引入父类进行占位,为了传参);class Demo2 extends Demo{public function __get($name){return $this -> $name;}}$getData2 = new Demo2;echo $getData2->text.'<hr>';class Test{protected string $txt;// public string $txt2;private $txt3 = '我是父类的私有变量';public function __construct($txt,$txt2){$this->txt = $txt;$this->txt2 = $txt2;}protected function getInfo():string{return $this->txt.' '.$this->txt2;// return ;}}// 扩展子类class Test1 extends Test{private string $txt4;public function __construct($txt,$txt2,$txt4){// 引用父类得构造器占位,一个就够了,不需要两个constructparent::__construct($txt,$txt2);// parent::__construct($txt2);$this -> txt4 = $txt4;}public function getInfo(): string{return parent::getInfo() . '....' .$this->txt4;}}$Demo6 = new Test1('hello','world','我在子类里面');echo $Demo6->getInfo().'<hr>';// 类中存在抽象方法,类必须为抽象类abstract class GetData{protected string $id = '0';protected string $frcn = '38950';protected string $imsi = '460001234512345';// 抽象类中,方法无法完成,但必须在子类中完成abstract public function getInfo();}// 抽象类扩展,方法可完成class GetDataSon extends GetData{public function getInfo(){return $this->id;}}$GET = new GetDataSon;echo $GET->getInfo().'<hr>';// 最终类,方法必须完成,否则会报错,无法再继续扩展子类了,final class Demo10 {public function getInfo(){}}// 接口类中两类成员:常量,方法(两者必须都是public)interface iName {public const NATION = 1;public const NAME2 = 2;public function A();public function B();public function C();}echo iName::NATION.'<hr>';// 抽象类继承接口的方法,可实现部分功能abstract class name implements iName{public function A(){return iName::NATION;}}// 工作类,继承抽象类class name2 extends name {public function B(){}public function C(){}}namespace four;const OP = 'WOCAO';echo \AAA\show2().'<hr>';echo \AAA\Index::class.'<hr>';echo \AAA\Index::show().'<hr>';namespace AAA;const KKK = '又是一个测试';function show2(){return __METHOD__;};class Index {public static function show(){return __METHOD__;}}
案例结果
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号