複製程式碼 程式碼如下:
/*
* 封裝性:物件導向三大特性之所以一
*
* 1.就是把物件的成員(屬性,方法)結合成一個獨立的相同單位,並儘可能隱藏物件的內部細節
* 存取權修飾符public protected private
* private:私有的,用這個關鍵字修飾的成員,只能在物件內部存取(只有用$this存取)
*
* 屬性可以封裝:
* 只要一個變量,需要在多個方法使用,就將這個變數宣告為成員屬性,可以直接在這個物件中的所有方法中使用
*
* 成員屬性,相當於這個物件中的全域變數
*
* 成員屬性都會在方法中使用,成員屬性值的變化其實就是在改變方法的執行行為,也就是改變了物件的功能
*
* 成員屬性的值如果不正常,方法執行的功能葉就不正常
*
* 作用:不需要在物件外部改變或讀取它的值
* 1.封裝
* 再提供一個公有的方法(經過方法對物件成員屬性賦值與取值就可以控制)
*
*
* 方法也可以封裝
*
* 作用:
* 1.使用private修飾使其只能在內部使用
*
* 2.一個類別中有100個方法,封裝了95個(為另外5個服務的方法),只有5個方法可以使用
*
* 100個成員屬性,都讓取值,不可以改值;或只可改值,不可取得值//此種情況下使用以下方法比較方便
* 和封裝相關的魔術方法:
*
* __set();//是直接設定[私有的]成員屬性值時,自動呼叫的方法
* __get();//是直接取得[私有的]成員屬性值時,自動呼叫的方法
* __isset();//是直接使用isset()查看物件中私有屬性是否存在時,自動呼叫這個方法
* __unset();//是直接使用unset()刪除物件中私有屬性時,自動呼叫的方法
*
*
*
*
*
*
*
*/
class Person{
/// x封裝成員屬性,不需要在物件外部改變
private $name;
private $age;
private $sex;
private __unset($proName){
unset($this- >$proName);
}
//是直接查看物件中私有屬性是否存在時,自動呼叫這個方法
//__isset($proName)的使用,$proName代表屬性名稱
private function __isset($proName){
return isset($this->$proName);//isset()回傳是否存在
}
function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
//當取得私有的成員屬性時,自動呼叫此方法
private function __get($proName)
{
//控制所取得的值
if($pr
if($this-age>40)
return $this->age-10;
}
return $this->$proName;
}
//當設定私有的成員屬性時,自動呼叫此方法
private function __set($proName,$proValue){
//$proName表示成員屬性名,$proValue表示成員屬性值
//控制設定範圍
if($pr
if( $proValue > 100 || $proValuereturn;
}
$this->$pr
}
//提供公有方法來設定成員屬性的值
function setAge($age){
//控制年齡範圍,增加安全性
if($age > 100 || $age return;
$this->age=$ age;
}
//提供公有方法來取得成員屬性的值
function getAge(){
//控制取得年齡的範圍
if($this->age return $this->age;
else if($this->agereturn $this->age-5;
else if($this->agereturn $this->age;
else
return $this->age-15;
提供公有方法來}
function say(){
echo "我的名字:{$this->name},我的年齡:{$this->age},我的姓別:{$this->sex}
";
//訪問封裝過的run( )方法
$this-run();
}
private function run(){
echo '111111111111
'
}
function eat(){
}
//析構方法
function __destruct(){
}
}
$p1=new Person("zhangsan",25,"男");
$p2 =new Person;
$p3=new Person;
//$p1->age=-50;//因為年齡在外部隨意訪問,所以成員屬性藥封裝,才有安全性。
$p1->setAge(30);//透過方法來設定成員屬性德值
$p1->getAge();//透過方法來取得成員屬性德值
//透過加家魔術方法__set($proName,$proValue) __get($proName),就可以直接呼叫成員屬性了
$p1->say();//可以呼叫
$p1->run() ;//私有的方法不能直接呼叫
//刪除$p1裡面的name
unset($p1->name);
//判斷name是否存在
if(isset($p1 ->name)){
echo "存在
";
}else{
echo "沒有這個成員
";
}
?>
以上就介紹了photoshop學習心得 php學習筆記 php中物件導向三大特性之一[封裝性]的應用,包括了photoshop學習心得方面的內容,希望對PHP教程有興趣的朋友有所幫助。