2010-11-01 73 views
0
<?php 

class jokz { 
    static public $val='123'; 
    static public function xxx() { 
     jokz2(self); 
    } 
} 

function jokz2($obj) { 
    echo $obj::$val; 
} 

jokz::xxx(); 
?> 

它返回致命錯誤,導致類「自我」無法找到... 所以..我如何使這項工作?PHP靜態類問題

傳遞一個參數在函數引用也不起作用

function jokz2(&$obj) { 
    echo $obj::$val; 
} 

回答

0

沒有任何對象可以通過self指的是靜態類)。你可以傳遞類的名稱並用這種方式調用它(使用call_user_func)或實例化一個對象並通過$this

+0

沒有其他辦法嗎?該代碼的主要目的是不應該將類名作爲靜態字符串傳遞,它就像函數xxx不知道類名 – jokz 2010-11-01 16:47:41

+1

您可以嘗試'__CLASS__'。如果您使用PHP> = 5.3,則可以調用'get_called_class'。否則,您可以查看debug_backtrace解決方案:http://stackoverflow.com/questions/506705/php-get-classname-from-static-call-in-extended-class – webbiedave 2010-11-01 16:55:52

0

你將不得不使用$this使用當前對象。