Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
<?php
class User
{
private $data = [
'age' => 20
];
//属性重载
//查询拦截器(属性名)
public function __get($name)
{
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return "属性{$name}不存在";
}
//更新拦截器(属性名,值)
public function __set($name, $value)
{
//判断属性是否存在
if (array_key_exists($name, $this->data)) {
//判断属性值是否合法
if ($value >= 18 && $value <= 59) {
$this->data[$name] = $value;
echo "已更新{$name},当前值为{$value}<br>";
} else echo "{$name}的值{$value}不合法,无法更新<br>";
} else {
echo "属性{$name}不存在,无法更新<br>";
}
}
//方法重载
//方法拦截器
public function __call($name, $arguments)
{
printf('方法: %s 参数:%s<br>', $name, print_r($arguments, true));
}
//静态方法拦截器
public static function __callstatic($name, $arguments)
{
printf('静态方法: %s 参数:%s<br>', $name, print_r($arguments, true));
}
}
$user = new User;
echo $user->name . '<br>';
echo $user->age . '<br>';
$user->name = '张老师';
$user->age = 29;
$user->age = 15;
$user->getName('王老师');
User::getAge('30');
<?php
namespace ns1 {
const ID = '1';
}
namespace ns2 {
const ID = '2';
}
//空间分级管理子空间
namespace ns3\ns4 {
const ID = '4';
}
namespace ns3 {
const ID = '3';
//完全限定名称 根空间 \
echo \ns1\ID . '<br>';
echo \ns2\ID . '<br>';
//非限定名称
echo ID . '<br>';
//限定名称
echo ns4\ID . '<br>';
}
<?php
namespace ns1;
//类文件的自动加载器
spl_autoload_register(function ($class) {
//将输入的命名空间加类名转换为类文件的绝对路径
$path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
//生成类文件的路径
$file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
//导入文件
require $file;
$arr = [];
array_push($arr, $class);
array_push($arr, $path);
array_push($arr, $file);
//printf('<pre>%s<pre>', print_r($arr, true));
});
$obj1 = new \inc\demo1();
$obj2 = new \inc\demo2();
$obj3 = new \inc\demo3();