[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по реализации
enRai
Здравствуйте, меня интересует следующий момент:
abstract class foo 
{
public function bar()
{
return array('a' => 'one', b => 'two');
}
}
И как в таком случае можно обращаться к переменной массива, возвращаемой функцией bar, как к переменной класса? то есть примерно так:
foo::bar()->a;
или
foo::another_bar()->a;
или как то еще?

Заранее вам благодарен



Спустя 25 минут, 15 секунд (11.10.2010 - 11:20) linker написал(а):
foo::bar() возвращает массив, а не объект.

Спустя 6 минут, 50 секунд (11.10.2010 - 11:26) enRai написал(а):
Я это понимаю smile.gif Вот мне и нужно переделать массив в объект, и, как понимаю, возвращать его другой функцией. Как это сделать? То есть массив не постоянный, в него могут как добавляться, так и удаляться из него элементы.

Спустя 50 минут, 6 секунд (11.10.2010 - 12:17) SlavaFr написал(а):
ну так используй с самого начала не масив а StdClass обйект, к стате если ты bar как статик вызываеш, то имеет смысл функцию тоже на static переделать.

Спустя 4 минуты, 15 секунд (11.10.2010 - 12:21) linker написал(а):
class foo 
{
public static function bar()
{
return new object(array('a' => 'one', b => 'two'));
}
}


class object
{
protected $properties = array();

public function __construct($array = array())
{
foreach($array as $name => $value)
$this->$name = $value;
}

public function __set($name, $value)
{
$this->properties[$name] = $value;
}

public function __get($name)
{
return isset($this->properties[$name]) ? $this->properties[$name] : null;
}
}


echo foo::bar()->a;

Спустя 7 минут, 38 секунд (11.10.2010 - 12:28) SlavaFr написал(а):
linker, просто

public static function bar()
{
return (object)array('a' => 'one', 'b' => 'two');
}

cast operator работает тоже smile.gif

Спустя 2 минуты, 55 секунд (11.10.2010 - 12:31) linker написал(а):
SlavaFr
Ну это хорошо когда более ничего не надо. А тут задел на будущее, типа если понадобиться нечто большее чем просто вывод значения поля объекта
foo::bar()->showme();

Спустя 32 минуты, 50 секунд (11.10.2010 - 13:04) enRai написал(а):
Спасибо вам огромнейшее, я вот только на статью о магических функциях наткнулся smile.gif
Быстрый ответ:

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