重载
重载是指:当对一个对象或类使用其未定义的属性或方法的时候,其中的一些“处理机制”;
属性重载
对一个对象的不存在或者私有属性进行使用的时候,在类中预先设定好的应对办法
- 取值:
当对一个对象的不存在的属性进行“取值”的时候,就会自动调用内部方法:__GET()
class Demo
{
private $money = 100;
public function __get($name)
{
echo '访问的属性不存在或权限不够!';
}
}
$demo = new Demo;
echo $demo->money;
- 赋值:
当对一个对象的不存在的属性进行“赋值”的时候,就会自动调用内部方法:__SET()
class Demo1
{
private $arr_list = [];
public function __set($name, $value)
{
return $this->arr_list[$name] = $value;
}
}
$demo = new Demo1;
echo $demo->money = 2000;
- 判断(isset):
当对一个对象的不存在的属性进行isset()判断的时候,就会自动调用内部方法:__isset()
class Demo1
{
private $arr_list = [];
public $age = 1;
public function __set($name, $value)
{
return $this->arr_list[$name] = $value;
}
public function __isset($name)
{
$age = isset($this->arr_list[$name]);
return $age;
}
}
$demo = new Demo1;
echo $demo->money = 2000, '<br>';
$demo1 = isset($demo->age);
var_dump($demo1);
- 销毁(unset):
当对一个对象的不存在的属性进行unset()销毁的时候,就会自动调用内部方法:__unset()
class Demo1
{
private $arr_list = [];
public $age = 1;
public function __set($name, $value)
{
return $this->arr_list[$name] = $value;
}
public function __isset($name)
{
$age = isset($this->arr_list[$name]);
return $age;
}
public function __unset($name)
{
unset($this->arr_list[$name]);
}
}
$demo = new Demo1;
echo $demo->money = 2000, '<br>';
$demo1 = isset($demo->age);
var_dump($demo1);
echo '<br>';
unset($demo->age);
var_dump($demo2);
方法重载
当对一个对象的不存在的实例方法进行“调用”的时候,会自动调用类中的__call()这个魔术方法;
class Demo
{
private $age;
public function __call($name, $value)
{
echo '方法被调用';
}
}
$demo = new Demo;
// tell()方法不存在
$demo->tell();
全局成员
全局成员有常量、函数、类,不能重复定义或者更新
- 常量
const MAN = ‘jack’
- 函数
function username()
{
echo ‘name is jack’;
}
- 类
class Demo
{
private $age;
}
命名空间
//全局空间
namespace {
class Demo
{
private $age;
}
// 访问当前空间
echo Demo::class, '<br>';
// 访问name1空间
echo \name1\Demo::class, '<br>';
// 访问name2空间
echo \name1\name2\Demo::class, '<br>';
}
//父空间
namespace name1 {
class Demo
{
private $age;
}
}
//子空间
namespace name1\name2 {
class Demo
{
private $age;
}
}