Формирование цепочки результата функции? С тех пор, когда это возможно?

Я был вполне поражен, когда я ошибочно напечатал то, чему я верил, поднимет ошибку:

function r() { return array( 'foo' ); }
echo r()[0];

К моему изумлению это работало и даже не подняло уведомление. Я не забываю не быть способным делать это, когда я сначала попробовал, и я заметил это на Codepad ошибка была поднята. Я управляю PHP 5.4.4 и задаюсь вопросом, когда эта функциональность была добавлена и где я могу читать больше об этом. Google только показал результаты для Формирование цепочки метода PHP 5 , но я предполагаю, что это - что-то еще?

3
nl ja de
Спасибо, теперь я могу пребывать в уверенности что я didn' t натыкаются на некоторую странную ошибку и отпуск он как этот в моем коде.;)
добавлено автор Louis B., источник
От доктора множества: PHP 5.4 возможно выстроить dereference результат вызова функции или вызова метода непосредственно. Прежде чем это было только возможное использование временной переменной". И можно читать больше об этом там также (не очень, нет ничего специального об этом на самом деле).
добавлено автор Felix Kling, источник

2 ответы

Начиная с PHP 5.4 это возможно <им>, "выстраивают dereference" результат функции/метода непосредственно; в PHP 5.5 то же самое идет для литерала массивов ( множество ('foo', 'бар') [1]; , возможно, даже [1,2,3] [1]; , хотя я не уверен в последнем),

See the docs here
Example #7 Array dereferencing:

С PHP 5.4 возможно выстроить dereference результат вызова функции или вызова метода непосредственно. Прежде чем это было только возможное использование временной переменной.

С PHP 5.5 возможно выстроить dereference литерал массивов.

edit:
Just to be clear: method chaining is, indeed, something else; it's often referred to as "the fluent interface", too. At least that's what everybody called it at my previous job. The basic idea is that a method that needn't return anything gets an explicit return $this; statement. The upshot is that these methods return a reference to the object, which you can use to invoke another method, without having to type the var a second time:

$someObject->setProperty('Foobar')//returns $this
           ->anotherMethod();
//instead of
$someObject->setProperty('Foobar');//returns null by default
$someObject->anotherMethod();

Кодекс для этого объекта был бы похож на это:

class Foo
{
    private $properties = null;

    public function __construct(array $initialProperties = array())
    {
        $this->properties = $initialProperties;
    }
    //chainable:
    public function setProperty($value)
    {
        $this->properties[] = $value;
        return $this;//<-- that's all
    }
    //NOT chainable
    public function anotherMethod()
    {
        return count($this->properties);//or something
    }
}
3
добавлено

function array dereferencing was added in version 5.4.0

1
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp