您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x设计模式之二:二段构建模式

2013-12-11 20:36 148 查看
面向对象的封装特性

Private

Class star{
public $name;
private $age;
private $weight;

//构造函数,在类被实例化之后,第一个被自动执行的方法,不需要人工进行手动调用
function __struct($name,$age,$weight){

$this->name=$name;
$this->age=$age;
$this->weight=$weight;
}

//当对象访问类的私有属性时,系统会自动调用
private function __get($varName){

return $this->$varName;
}

//当对象访问类的私有属性,并为私有属性赋值时,系统会自动调用
private function __set($varName,$strValue){

return $this->$varName=$strValue;
}

//当对象 访问类的私有属性,并使用isset()函数判断对象的私有属性是否存在时,系统自动调用__isset()
private function __isset($strName){

return isset($this->$strName);

}

//当对象访问类的私有属性,并使用unset()函数销毁对象的私有属性的时候,系统自动调用__unset()魔术方法

private function __unset($strName){

unset($this->$strName);//unset($var)销毁变量时没有返回值

}

}

$star=new star;

echo $star->name;
//访问对象的公共属性,可以直接访问

$star->="李小龙";
//可以访问对象的公共属性,并赋值

isset($star->name);
//可以在类的外部直接使用isset()函数判断类的公共属性是否存在

unset($star->name);
//可以再类的外部直接使用unset()函数来对对象的公共属性进行销毁

/////////////关于私有属性的操作///////////////

echo $star->age; //return error
//不能在类的外部直接访问类的私有属性

$star->age="30";//return error
//不能再类的外部直接访问类的私有属性,并为其赋值

echo isset($star->weight);  //return error
//不能在类的外部直接判断对象的私有属性是否存在

unset($star->weight); //return error
//不能在类的外部直接销毁类的私有属性

//////////////////系统自动调用类的魔术方法访问私有属性,并对私有属性进行操作//////////////////////////

//对象访问类的私有属性,系统自动调用__get()魔术方法
echo $star->age;

//对象访问类的私有属性,并为该私有属性赋值,系统自动调用__set()魔术方法
$star->weight="65kg";

//对象访问类的私有属性,并使用isset()函数判断该私有属性是否存在,系统自动调用__isset()魔术方法
isset($star->age);

//对象访问类的私有属性,并使用unset()函数销毁该私有属性时,系统自动调用__unset()魔术方法
unset($star->weight);


本文出自 “我的PHP之路” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: