Noveo

Наш блог Laravel: Доступ к массивам и объектам

Laravel: Доступ к массивам и объектам

Сложности в работе с массивами и объектами? Марсель Домке (Marcel Domke) предлагает справляться с ними с помощью хелперов Laravel. 

Laravel: Accessing Arrays & Objects

Как показывает мой опыт работы с РНР, работать с объектами и массивами иногда очень непросто. Одна из многочисленных ошибок в РНР — Notice: Undefined index. Думаю, что с ней сталкивался каждый разработчик. Существует несколько способов ее избежать, и некоторые общепринятые вам наверняка уже знакомы, но я бы хотел показать, как в этом может помочь Laravel, использующий встроенные хелперы по работе с массивами и объектами.

Какие возможности у меня есть в PHP?

У PHP есть целый набор проверок, которые можно сделать прежде, чем начать работать с массивами и объектами.  Приведу несколько в качестве примера: isset(), array_key_exists(), property_exists() или даже empty(). А что у всех этих функций общего? Они усложняют ваш код, добавляя лишних условий if.

https://gist.github.com/tlkshadow/6f214caddd8aec86c95136366005cf83#file-unhandy_data_functions-php
Все верно и, вероятно, даже работает, но слишком сложно и некрасиво.

Я знаю, что вы хотите сказать: есть еще Null Coalesce оператор и короткая форма написания условного оператора if. Но они также добавляют излишней сложности.

И тут нам приходит на помощь одно из многочисленных достоинств Laravel — хелперы по работе с массивами и объектами.

Доступ к массивам в Laravel

Laravel располагает арсеналом функций и фасадов, помогающих вам написать более читабельный, короткий и простой код.

К примеру, мы хотим получить ключ массива из моего кода выше. В Laravel это можно сделать одной строчкой кода.

echo Arr::get($data, 'likes');

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

echo Arr::get($data, 'not', '1');

Здорово, правда? И это еще не все. Представьте, что структура вашего массива еще глубже, и код скоро придет к чему-то вроде приведенного ниже.

https://gist.github.com/tlkshadow/9c9da1f09877a242765676d500237943#file-complex_array_structures-php

А в Laravel вместо этого есть возможность доступа к любому уровню вложенности через точку, и получить данные можно намного проще, эффективнее и в более читабельном виде.

echo Arr::get($data, 'more.complex.0');

Доступ к объектам в Laravel

Теперь единственное, чего нам не хватает, — это доступа к свойствам объекта.

Здесь у Laravel тоже есть довольно удобная вспомогательная функция, позволяющая нам работать так же просто, как и с массивами, доступ к вложенным объектам через точку так же возможен.

https://gist.github.com/tlkshadow/1e8ef15d5bc18ba146aafb1f169771d1#file-laravel_data_get-phpЗаключение

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

Оригинал: Laravel: Accessing Arrays & Objects by Marcel Domke

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

НазадПредыдущий пост ВпередСледующий пост

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: