2013年3月13日 星期三
PHP的物件模式
在這裡介紹一下一些PHP物件的模式:
__construct 建構子:會在物件宣告時執行,如果需要代入參數,在宣告時必須一併帶入。
__destruct 解構子:在物件被釋放的時候會執行。
__clone 複製整個物件
class point
{
var $x;
var $y;
function __construct($var1=0, $var2=0)
{
$this->x = $var1;
$this->y = $var2;
}
function show_center()
{
echo "<BR>The center is: ".$this->x."|".$this->y;
}
}
$a = new point(2,3);
$b = $a->_clone(); //複製物件, b 的中心點一樣會是 2,3
物件保護模式
public (公有模式):任何人都可以使用
private(私有模式):只有物件內自己可以使用
protected (保護模式):只有物件以及子物件可以使用
__call() 使用方法:
當__call函式存在時,如果不存在的物件函式被呼叫,就會觸發__call(),這樣可以防止錯誤的呼叫。
class point
{
var $x;
var $y;
function __construct($var1=0, $var2=0)
{
$this->x = $var1;
$this->y = $var2;
}
function show_center()
{
echo "<BR>The center is: ".$this->x."|".$this->y;
}
function __call($name, $arg)
{
echo "<BR>".$name." does not exist! ";
}
}
$point1 = new point;
$point1->test1();
就會出現 test1 does not exist!的訊息
_set 以及 _get 的用法
這兩個方法可以用來預防錯誤的參數存取,如果再上面的類別加上下面這兩個函式。
function __set($name, $val){
echo "I'm sorry, but ".$name." is not exist, you can't set it to ".$val;
}
function __get($name){
echo "I'm sorry, but ".$name." is not exist";
}
當嘗試錯誤存取的時候就會顯示訊息:
$point1->xxx = 10; 會顯示 I'm sorry, but xxx is not exist, you can't set it to 10
echo $point->yyy; 會顯示 I'm sorry, but yyy is not exist
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言