2010-11-01 5 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

+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

0

Вы должны использовать $this использовать текущий объект.