Re: [請益] Class的一些問題
※ 引述《StubbornLin (Victor)》之銘言:
: function getDataSource(){
: static $IsCreated = false;
: static $DataSource ;
: if(!$IsCreated){
: $DataSource = new DataSource;
: $IsCreated = true;
: }
: return $DataSource;
: }
: 在這裡,我想創造一個唯一的DataSource這個class的reference
class MyClass {
private static $instance;
public function MyClass()//建構子
{
self::$instance =& $this;
}
public static function &get_instance()
{
return self::$instance;
}
}
這樣就有唯一的class reference
要注意的是'&'在php跟C++的功能不一樣
php4中物件傳遞是call by value '&'在這裡的功能是call by reference
當然如果可以的話用php5就沒問題了 php5中物件傳遞是CBR
: 透過這個函數取得,但是這樣看起來很蠢
: 我用之前在C++裡面的寫法
: function getDataSource(){
: static $DataSource = new DataSource;
: return $DataSource;
: }
我C++不熟 請問一下這樣會是唯一的class reference嗎
這不會每次呼叫getDataSource()都new一個新的object嗎
: 但是卻得到像這樣的錯誤訊息
: Parse error: parse error, unexpected T_NEW in
: /home/customer/kinmen.info/www/test.php on line 38
: 使用的版本是4.3.11
: 請問是因為static的變數 在這個版本裡規定 本來就不能使用new這個operator
: 還是我寫的方式不對?
: 接著,還有一個問題就是,直接使用Class::Function取得的Class Refrence
: 去做->然後存取東西也會出錯
: echo DataSource::getDataSource()->GetData();
: 錯誤訊息
: Parse error: parse error, unexpected T_OBJECT_OPERATOR, expecting ',' or ';'
: in /home/customer/kinmen.info/www/test.php on line 52
: 而修正問題的方式我先用一個變數去接class的refrence
: 然後再操作這個變數就解決了
: $DataSource = DataSource::getDataSource();
: echo $DataSource->GetData();
: 但是我還是希望能夠直接操作回傳來的class,請問該怎樣寫呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.112.156
※ 編輯: superGA 來自: 140.119.112.156 (01/23 19:26)
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章