标签:prot 直接 形式 php char class 访问 ext name
1.当去使用可访问的属性时,系统就会调用__get方法 不可访问属性:该属性不存在 直接访问protected或private属性
2.当去给不可访问属性赋值时,会调用__set方法
<?php
header(‘content-type:text/html;charset=utf-8‘);
class human{
public $name;
protected $food;
function __construct($name,$food){
$this->name=$name;
$this->food=$food;
}
//魔术方法
//魔术方法名字是固定的系统提供
//$pro_name
public function __get($pro_name){
if(property_exists($this,$pro_name)){
return $this->$pro_name;
}
else{
return "没有该属性";
}
}
}
$wd= new human(‘温蛋‘,‘鸡‘);
echo "<br> 名字是".$wd->name;
echo "<br> 食物是".$wd->food;
<?php
header(‘content-type:text/html;charset=utf-8‘);
class human{
public $name;
protected $food;
function __construct($name,$food){
$this->name=$name;
$this->food=$food;
}
//魔术方法
//魔术方法名字是固定的系统提供
//$pro_name 是形式参数,表示属性名
public function __get($pro_name){
if(property_exists($this,$pro_name)){
return $this->$pro_name;
}
else{
return "没有该属性";
}
}
//魔术方法
//魔术方法名字是固定的系统提供
//$pro_name 是形式参数,表示属性名 $pro_val是属性值
public function __set($pro_name,$pro_val){
// echo $pro_name.$pro_val;
if(property_exists($this,$pro_name)){
$this->$pro_name=$pro_val;
}
else{
return "没有该属性";
}
}
}
$wd= new human(‘温蛋‘,‘鸡‘);
echo "<br> 名字是".$wd->name;
echo "<br> 食物是".$wd->food;
//修改对象名字和食物
$wd->name="猪";
//在默认情况下,不能直接给一个protected属性赋值,会触发set魔术方法;
$wd->food="猪饲料";
echo "<br />新的值是";
echo "<br> 名字是".$wd->name;
echo "<br> 食物是".$wd->food;
标签:prot 直接 形式 php char class 访问 ext name
原文地址:https://www.cnblogs.com/zuichumx0826/p/9152962.html