封裝特性:在一個物件產生之後,物件的部分成員屬性和成員方法在邏輯上是不允許在物件外部調用或者使用的
1. 被private修飾的成員屬性、成員方法不能夠在類的外部進行訪問,只可以在類的內部訪問。
2. var和private只能選取一個(public 和 protected)
<?php
class Bear
{
private $name = 'Winnie';
private $sex = '女';
var $flag = true;
//成員方法
function sayHi()
{
echo 'HIHI~ Hello World ';
}
function eat()
{
echo '魚好吃!';
}
function hunter()
{
echo '我是一隻熊,我會捕魚,話說,西索很帥!';
}
//魔術方法 __get()
function __get($pro)
{
// echo '#########';
// echo $this->name;
// return $this->$pro;
if ($pro == 'name') {
return $this->name;
} else {
return $this->$pro . '禁';
}
}
}
//實例化對象
$animal = new Bear();
var_dump($animal);
echo $animal->name; //Fatal error 不能訪問
echo '<hr/>';
$animal->name = '哈哈哈';//也不行
var_dump($animal);
<?php
class BearPerson
{
//成員屬性
var $name = 'Winnie';
private $sex = '女';
private $age = 18;
//成員方法
function sayHi()
{
echo '吉祥如意~';
}
function hunter()
{
echo '捕到魚嘩啦啦啦啦啦~~~';
}
//魔術方法
function __set($pro, $newVal)
{
//echo '########';
// var_dump($pro);
// var_dump($newVal);
//$this->$pro = $newVal;
if ($pro == 'sex') {
$this->$pro = $newVal;
} else {
//沒有返回值
//return '無權修改';
}
}
//魔術方法 __isset
function __isset($pro)
{
// echo '########';
// var_dump($pro);
return isset($this->$pro);
}
//魔術方法 __unset()
function __unset($pro)
{
//echo '#########';
//var_dump($a);
if ($pro == 'sex') {
unset($this->$pro);
}
}
}
//實例化一個對象
$bear = new BearPerson;
// var_dump($bear);
// //訪問私有成員屬性
// //echo $bear->sex;
// //設置私有成員屬性
// $bear->sex = '不男不女';
// var_dump($bear);
// echo $bear->age = 50;
// var_dump($bear);
//實例化一個對象 isset()
//檢查姓名屬性是否設置 非私有
// $result = isset($bear->name);
// var_dump($result);
//檢查私有成員屬性
// $result = isset($bear->age);
// var_dump($result);
//刪除一個屬性 unset() 非私有的
// unset($bear->name);
// var_dump($bear);
// echo $bear->name;
//刪除一個私有成員屬性
unset($bear->sex);
var_dump($bear);