Хочется элегантно получить элемент массива возвращаемого методом

QQQ

Новичок
Хочется элегантно получить элемент массива возвращаемого методом

В общем некий метод некого объекта возвращает массив. Надо первый элемент этого массива. Хотелось сделать вот-так:

$Var = $Obj->Method()[0];

однако обнаружил, что в PHP на подобную конструкцию матерится. Я туплю с синтаксисом или желаю неосуществимого? ))

-~{}~ 28.11.07 20:05:

И ещё вопрос по синтаксису. Вот так работает:

$Var[$key] = sClass::Method();
$Pointer = &$Var[$key];


А вот так не работает:

$Pointer = &$Var[$key] = sClass::Method();


Со скобками играться пробовал... не помогло. Я опять слишком многого хочу? ))
 

phpdev2007

Новичок
есть маленькое свойство в php
попробуйте может подойдёт
PHP:
$array->test = 'test';
echo $array->test;
 

QQQ

Новичок
phpdev2007
не совсем понял, как ваш пример относится к описанному мной выше :)

однако то, что вы привели - тоже очень интересно. по сути имеем сходу объект с набором свойств. мне стыдно, но я почему-то этого не знал. сэнкс!
 

phpdev2007

Новичок
есть в php стандартный объект с пустыми методами - свойствами
сделайте следующее
PHP:
$array->test = 'test';
echo $array->test;
var_dump($array);
то что выведет var_dump выше код, смотреть имя класса на php.net :)

А теперь подумайте как сделать такую конструкцию:
PHP:
echo $array->key->value;
 

JD

Новичок
Главное, не очень сильно увлекаться всякими хитроумными вещами - можно самому запутаться потом в написанном, не говоря уже о других разработчиках, которые будут работать с этим кодом. Код должен читаться легко.
 

QQQ

Новичок
phpdev2007
понял, что объект stdClass.. а дальше подумаю завтра, щас сплю уже :)

JD
само собой я не маньяк :) да и не сторонник чрезмерно(!) "оптимизированного" кода )) это скорее теоритические изыскания, нежели практическая необходимость.. язык хочется как можно лучше узнать

Pigmeich
само собой думал! )) это я прочухал ещё до создания данного топика. ну а если мне сотый элемент массива нужен? )) не надо мне просто было в заглавном посте делать акцент на первый элемент...
 

Pigmeich

Новичок
QQQ если тебе нужен 100-й элемент - то меняй структуру класса, ибо ворощить 100 элементов из-за одного плохая примета.
 

fixxxer

К.О.
Партнер клуба
а кто мешает возвращать нужный элемент, а не весь массив?
 

QQQ

Новичок
Pigmeich
Alexandre
fixxxer
сказал же: интересуюсь с теоретической (а НЕ практической) точки зрения.. а то все умные такие, лишь бы совет дать =))
 

Pigmeich

Новичок
QQQ
Ну так тебе с теоретической и ответили, что это bad code smell.

А то что плохой код трудней реализовывать еще даже до Фаулера писали.
 

AmdY

Пью пиво
Команда форума
специально для извращенцев, остальные, так не делаем.
PHP:
class MyClass { 
 protected function method(){ 
      return array(1,2,3); 
 } 
 public function __get($method) {
     if (method_exists($this, $method)) {
         $val = $this->{$method}();
         return $val;
     }
 }
}
$c = new MyClass();
$v = $c->method[1];
var_dump($v);
 

AmdY

Пью пиво
Команда форума
При ООП подходе, скорее
$Var = $Obj->Method()->reset();
либо
$Var = $Obj->Method()->get(0);
 

Pigmeich

Новичок
AmdY
э-э, это что надо собственную обертку на ассоциативные массивы делать?
 
Сверху