批改状态:合格
老师批语:
class Demo{private $role='admin';private $username='admin';//属性重载public function __get($name){if($this->role === 'admin'){return $this->username;}else{return '非法访问';}}}$obj=new Demo();echo $obj->username;

class Demo{protected $data=['name'=>'admin',];public function __get($name){$method='get'.ucfirst($name);if(method_exists($this,$method))return $this->$method($name);}public function getName($name){if(!isset($this->data[$name])){$this->data[$name]=0;}else{return $this->data[$name];}}}$obj=new Demo();echo $obj->name;

class Demo{protected $data=['name'=>'admin',];public function __set($name,$value){$method='set'.ucfirst($name);if(method_exists($this,$method))return $this->$method($name,$value);}public function setEmail($name,$value){$this->data[$name]=$value;}}$obj=new Demo();$obj->email='admin@php.cn';var_dump($obj);

public function __call($name, $arguments){return $name.'<br>'.implode(',',$arguments);}$obj=new Demo();var_dump($obj->hello(1,2,3));

public static function __callStatic($name, $arguments){return $name.'<br>'.implode(',',$arguments);}$obj=new Demo();var_dump(Demo::hello(1,2,3));

不能重复定义
主要就是为了解决全局成员的命名冲突
namespace app1{class Model{}const PATH='app/';function get(){}echo Model::class,'<br>';echo PATH::class,'<br>';echo get::class,'<br>';}namespace app2{class Model{}const PATH='app/';function get(){}echo Model::class,'<br>';echo PATH::class,'<br>';echo get::class,'<br>';}

全局命名空间
namespace{class Model{}const PATH='app/';function get(){}echo Model::class,'<br>';echo PATH::class,'<br>';echo get::class,'<br>';}

同名空间成员的组织方式
防止一个命名空间的代码过多,可以将同一个命名空间的代码写到多个脚本中
namespace app;require 'namespce1.php';require 'namespace2.php';echo Demo2::class,'<br>';echo Model::class,'<br>';

子命名空间
```html
namespace Ns1{
class Demo{
}
echo Demo::class,’<br>‘;
// namespace用在空间中,标识当前空间的引用,类似$this或self
// echo namespace\Ns2\Demo::class;
echo Ns2\Demo::class,’<br>‘;
echo Ns2\Ns3\Demo::class,’<br>‘;
echo ‘<hr>‘;
}
namespace Ns1\Ns2{
class Demo{
}
}
namespace Ns1\Ns2\Ns3{
class Demo{
}
}
子命名空间访问上级```htmlecho Demo::class,'<br>';//从子级访问上级echo \Ns1\Ns2\Demo::class,'<br>';echo \Ns1\Demo::class,'<br>';//访问全局echo \Demo::class,'<br>';

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号