《PHP與MySQL程式設計》第六章

來源:互聯網
上載者:User

標籤:

用_ _set()方法設定屬性

boolean __set([string property_name] , [mixed value_to_assign])

自己寫了個容易理解的

<?phpclass Employee{    var $name;    function __set($propName, $propValue)    {        echo ‘$name =‘ . $this->name . ‘<br/>‘;        echo ‘$propName = ‘ . $propName . ‘<br/>‘;        echo ‘$propValue = ‘ . $propValue . "<br/>";                $this->$propName = $propValue;    }        }$employee = new Employee();$employee->name = "Mario";$employee->title = "Exective chef";echo $employee->title;//輸出// $name =Mario// $propName = title// $propValue = Exective chef

 

__set()方法是預設的,我測試了一下,我不寫__set()方法,也可以實現

$employee->sex = ‘M‘;

echo $employee->sex;

__set()的方法可以限制一些屬性的設定,比如:

<?phpclass Employee{    var $name;    function __set($propName, $propValue)    {        if ($propName == ‘age‘) {            if ($propValue < 18 || $propValue > 60) {                $this->$propName = null;            } else {                $this->$propName = $propValue;            }        } else {            $this->$propName = $propValue;        }    }}$employee = new Employee();$employee->name = "Mario";$employee->age = "17";$employee->page = 1;echo ‘name = ‘ . $employee->name . ‘<br/>‘;echo ‘age = ‘ . $employee->age . ‘<br/>‘;echo ‘page = ‘ . $employee->page;//輸出 僱員的年齡小於18或大於60的時候age=null// name = Mario// age =// page = 1

 

 

 

用 _ _get()方法擷取屬性

boolean __get([string property_name])

 

測試

結論:

當屬性存在的時候,__set()和__get()是不僅過的。測試例子如下->

<?phpclass Employee{    public $name;    public $city;    protected $wage;        function __set($propName, $propValue)    {        echo "__set called!<br/>";$this->$propName = $propValue;    }        function __get($propName)    {        echo "__get called!<br/>";        $vars = array(            "name",            "city"        );                if (in_array($propName, $vars)) {            return $this->$porpName;        } else {            return "No such variable!";        }    }        }$employee = new Employee();$employee->name = "Mario";$employee->city = "shan";echo $employee->name . "<br/>";echo $employee->city . "<br/>";// 輸出// Mario// shan

 

在下面加入下的代碼->

$employee->age = 20;echo $employee->age . "<br/>";// 輸出// __set called!// 20echo $employee->sex . "<br/>";//輸出// __get called!// No such variable!

如果在$vars數組中加入sex的話,程式報錯!

 

看下來感覺沒什麼亮點,用不起來。

 

《PHP與MySQL程式設計》第六章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.