2012-01-28 5 views
1

Я пытаюсь получить доступ к переменным из родительского класса, как показано ниже:PHP: Не удается получить доступ к переменным класса родителя

//PARENT CLASS 
class InfoString{ 
    private $username = "JOE"; 

    public function _construct(){} 

    protected function get_username(){ 
     return $this->username; 
    }   
} 


class Service extends InfoString{ 
    //this class should now inherit the variables in InfoString, right?? 
    public function _construct(){} 

    public function hello_username(){ 
     echo "HELLO! ". parent::get_username(); 
    } 
} 

и я называю класс следующим образом:

$a = new Service(); 
$a->hello_username(); //prints nothing, instead of the username 

Вместо получения «HELLO! JOE», я получаю пустую строку. Что я здесь делаю неправильно?

Кроме того, предположим, что класс «InfoString» будет содержать параметры конфигурации - это хорошая идея расширить этот класс или что будет правильной реализацией для получения переменных конфигурации из, скажем, класса «InfoString» в другой класс? ??

Спасибо.

+1

http://codepad.viper-7.com/wqiKSF – xdazz

+0

Нет, правильно, убедитесь, что вы пишете свой код. Кажется, ошибок нет. – Bajrang

+0

Не нашли никакого с вашего кода кода. Он работает очень хорошо на моем сервере и печатает вывод желания. –

ответ

2

Вы просто расширяете InfoString, так что вы можете просто использовать $this->get_username();, и он будет работать нормально. :: предназначен для вызова статических методов.

Также вы получите сообщение об ошибке, если вы увеличите уровень ошибок. Вызвать error_reporting(E_ALL); это даст вам подсказки для решения подобных проблем в будущем.

+0

Спасибо. Я попробую отрегулировать уровень ошибки. – Johny

Смежные вопросы