2010-11-01 71 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使用当前对象。