魔术方法——一小部分函数用法--作用
__get()
__get()魔术方法,在外部访问该类中不能直接访问的属性时调用
魔术方法都有其默认的定义格式,不能随意更改。
魔术方法不能添加static静态的修饰符
代码:
加判定代码:
class City
{
protected $name;
private $area;
function __construct($name, $area)
{
$this->name = $name;
$this->area = $area;
}
/*__get魔术方法,在外部访问该类中不能直接访问的属性时调用
*魔术方法都有其默认的定义格式,不能随意更改。
*魔术方法不能添加static静态的修饰符
*__get()魔术方法必须要有一个返回值
*$name 对应的是类中的被声明的属性名称,格式为字符串
*/
function __get($name)
{
// echo'get调用'.$name;
if (isset($this->$name)) {
return $this->$name;
} else {
return null;
}
}
}
$city
= new City('成都', '3000平方公里');
echo
'地名:' . $city->name . "<br>";
echo
'面积:' . $city->area . "<br>";
echo
'人口:' . $city->pel . "<br>";
效果:
Ⅲ.__set() :
__set魔术方法,在给类中无法直接访问的属性赋值时自动调用
$name 被赋值的类中的属性名称,字符串格式
$value 被赋予的值
代码:
class City
{
protected
$name;
private
$area;
function
__construct($name, $area)
{
$this->name = $name;
$this->area = $area;
}
/*
* __set魔术方法,在给类中无法直接访问的属性赋值时自动调用
* $name 被赋值的类中的属性名称,字符串格式
* $value 被赋予的值
*/
function __set($name, $value)
{
/**
* property_exists()检测类或者对象中是否包括指定名称的属性
*/
if (property_exists($this,$name)) {
return
$this->$name = $value;
}
else{
echo"类中没属性:".$name.'<br>';
}
}
}
$city->name = '重庆';
$city->pel = '15';
echo '地名:' . $city->name . "<br>";
echo '面积:' . $city->area . "<br>";
echo '人口:' . $city->pel . "<br>";
echo '<br>';
效果:
Ⅳ._isset()检测变量是否设置;__unset()销毁变量
Ⅴ.__call() $name 参数是要调用的方法名称。 $arguments 参数是一个枚举数组,包含着要传递给方法 $name 的参数。
call_user_func_array() 来访问类中的函数方法,参数随意。
Ⅵ. __toString()魔术方法,当使用字符串的方式来输出类的对象时被自动调用
代码:
Ⅶ. __clone() 魔术方法,当类的对象被克时自动调用
默认的克隆是浅克隆
可以在克隆里修改值
代码:
效果: