有些物件的操作方式是不允許的
- 在新增物件時不能直接呼叫成員函數
- 要透過函數才能建立匿名函數
<?php
class DataCheck {
// 成員變數
public $value=null;
// 建構子
public function __construct($value) {
$this->value=$value;
return $this;
}
// 成員函數
public function getValue() {
return $this->value;
}
}
// PHP 物件的使用方式
$a = new DataCheck("test");
$v = $a->getValue();
// 一般物件的使用方式
$v = new DataCheck("test")->getValue(); //Error
/* 但這樣做在 PHP5 中是不可行
* PHP5 對物件的架構還不是很完善
* 為了達到這樣的使用方式
* 建議使用物件中的靜態成員函數去達成
* 會比在 new 外加一個 () 要好多了
* 也可以在生成物件前做一些前置處理
* */
/**######################################################*/
class DataCheck {
// 靜態函數建立物件
public static function Value($value) {
return (new DataCheck($value));
}
// 成員變數
public $value=null;
// 建構子
public function __construct($value) {
$this->value=$value;
return $this;
}
// 成員函數
public function getValue() {
return $this->value;
}
}
// 利用靜態函數建立物件
$v = DataCheck::Value("test")->getValue();
/* 這樣就可以達成我們期望的方式
* 但最好還是希望 PHP 能夠對物件有更好的架構出現
* */
沒有留言:
張貼留言
你好!歡迎你在我的 Blog 上留下你寶貴的意見。