[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как получить данные из переменной
dirsex
Здравствуйте.


// Вопрос в следующем... Допустим у нас есть простенький класс с protected переменными:

class MyVariable
{
protected $nums;
protected $name;
protected $id;

}

// и есть наследование

class My extends MyVariable {
private static $_my;
public static function get() {
if(self::$_my===null) self::$_my=new self;
return self::$_my;
}
public function __construct()
{
$this->nums = 3;
$this->name = "test";
$id = 132;
}
}


// Ну и так создадим экземпляр
$my = new My;


Вобщем, если вызвать print_r($my); то он покажет массив примерно типа:

object array (
[nums:protected] => 3,
[name:protected] => test,
[id:protected] => 132
)

НО! Если я сделаю так:

$my->nums или My::get()->nums он мне отдаст fatal, что я типо пытаюсь protected метод вызвать, т.е. не конает.

Чтож тогда print_r показывает значения? Но вопрос не в этом, пофиг, мне и надо чтобы они видны были, я так понимаю print_r их показывает т.к. при наследование класса эти переменные должны быть доступны для чтения/наследования. (ну мое понимание)

Вопрос в другом, как отобразить мне My::get()->nums, если я сделаю $nums - public то его можно будет изменить, ну тупо даже My::get()->nums = 'blablabla', что совершенно не допустимо.

Или тут только через функцию типа геттера?

_____________
Голодный дух - хуже пьяного дембеля =)
kaww
Цитата (dirsex @ 14.10.2014 - 07:40)
Или тут только через функцию типа геттера?
, именно так. Можно еще воспользоваться магией - __get(). Ну и на самом деле если свойство protected, то это не значит что его нельзя получить извне. http://php.net/manual/ru/reflectionclass.g...tproperties.php
dirsex
Цитата
Можно еще воспользоваться магией - __get().


Спасибо. Все понял.

_____________
Голодный дух - хуже пьяного дембеля =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.