天天看點

php 封裝的類怎麼調用方法嗎,PHP封裝一個類的方法和代碼示例

時間:2019-08-06

概述:面象對象

PHP封裝一個類的方法和代碼示例,封裝一個“人物”類對象,通過這個對象的自定義,你或許會明白面向對象是怎麼一回事:

class Person {

private $name;//此屬性被封裝

private $sex;//此屬性被封裝

private $age;//此屬性被封裝

function __construct($name="", $sex="男", $age=1) {

$this->name = $name;

$this->sex = $sex;

$this->age = $age;

}

private function __isset($propertyName) {//需要一個參數,是測定的私有屬性的名稱

if($propertyName == "name") //如果參數中傳入的屬性名等于“name”時條件成立

return false;//傳回假,不允許在對象外部測定這個屬性

return isset($this->$propertyName);//其他的屬性都可以被測定,并傳回測定的結果

}

private function __unset($propertyName) {//需要一個參數,是要删除的私有屬性名稱

if($propertyName == "name") //如果參數中傳入的屬性名等于“name”時條件成立

return; //退出方法,不允許删除對象中的name屬性

unset($this->$propertyName); //在對象的内部删除在對象外指定的私有屬性

}

public function say() {

echo "我的名字:".$this->name.",性别:".$this->sex.",年齡:".$this->age."。

";

}

}

$person1 = new Person("張三", "男", 40); //建立一個對象$person1,将成員屬性分别賦上初值

var_dump( isset( $person1->name ) );//輸出bool(false),不允許測定name屬性

var_dump( isset( $person1->sex ) );//輸出bool(true),存在sex私有屬性

var_dump( isset( $person1->age ) );//輸出bool(true),對象中存在age私有屬性

var_dump( isset( $person1->id ) );//輸出bool(false),測定對象中不存在id屬性

unset( $person1->name );//删除私有屬性name,但在__unset()中不允許删除

unset( $person1->sex ); //删除對象中的私有屬性sex,删除成功

unset( $person1->age );//删除對象中的私有屬性age,删除成功

$person1->say();//對象中的sex和age屬性被删除,輸出:我的名字叫:張三,性别:,我的年齡是:

?>