В PHP стандартная библиотека небогата функциями для работы с коллекциями, строками или датами. Этот недостаток можно восполнить, подключив стороннюю библиотеку.
Например, в мире JavaScript есть стандарт lodash, без которого не обходится практически ни один проект. В PHP нет единого устоявшегося решения, но есть пачка небольших, которые используются в разных проектах. Часть из них основана на объектном синтаксисе — мы рассмотрим их в более поздних уроках. Часть стандартов — это набор обычных функций. Кроме того, часть функций относится к функциям высшего порядка, которые мы еще не проходили, но разберем уже в следующем уроке.
Объектные:
- Collect
- Stringy
- Carbon
Использующие только функции:
- Funct
- Bottomline
Сразу скажем, что в реальной работе необходимость использовать такие библиотеки возникает почти сразу. Еще совсем недавно PHP-программисты создавали файлы с полезными функциями и таскали их из одного проекта в другой. Эти времена уже прошли, можно не тратить время на то, что уже делалось тысячу раз до нас.
К сожалению, мы не сможем разобрать все возможные функции в этих курсах. Кое-что мы рассмотрим, но уже после учебы не забывайте периодически просматривать библиотеки — вдруг найдется что-то полезное.
Обратите внимание, что в указанных библиотеках иногда встречаются функции, которые уже встроены в сам язык. Так происходит по разным причинам:
- Согласованность. Такие функции-дубликаты делают для того, чтобы библиотека была полной
- Исправление ошибок PHP. В некоторых PHP-функциях по историческим причинам есть ошибки. Библиотеки могут сделать те же функции, но уже без ошибок
- Улучшение. Функции библиотек могут быть лучше стандартных: иметь другой порядок аргументов, расширенные возможности, убранные ограничения или просто понятное имя
Итак, начнем изучать функции библиотек. Первая на очереди — библиотека Funct.
Коллекции
Функция last
Такая простая и нужная функция почему-то отсутствует в самом PHP:
<?php
\Funct\Collection\last([1, 2, 3]); // 3
Функция rest
Принимает на вход массив. Возвращает новый массив, в котором отсутствует первый элемент исходного:
<?php
\Funct\Collection\rest([5, 4, 3, 2, 1]); // [4, 3, 2, 1]
Функция without
Возвращает копию массива, из которого удалены все значения, переданные в функцию вторым и последующими параметрами:
<?php
\Funct\Collection\without([1, 2, 1, 0, 3, 1, 4], 0, 1); // [2, 3, 4]
Функция flattenAll
Принимает вложенный массив и делает его плоским:
<?php
\Funct\Collection\flattenAll(['a', ['b', ['c', ['d']]]]); // ['a', 'b', 'c', 'd']
Функция union
Находит объединение множеств:
<?php
\Funct\Collection\union([1, 2, 3], [101, 2, 1, 10], [2, 1]); // [1, 2, 3, 101, 10]
Функция findWhere($collection, $value)
Просматривает массив и возвращает первое значение, совпадающее по всем парам «ключ-значение», переданным вторым параметром:
<?php
\Funct\Collection\findWhere(
[
['title' => 'Book of Fooos', 'author' => 'FooBar', 'year' => 1111],
['title' => 'Cymbeline', 'author' => 'Shakespeare', 'year' => 1611],
['title' => 'The Tempest', 'author' => 'Shakespeare', 'year' => 1611],
['title' => 'Book of Foos Barrrs', 'author' => 'FooBar', 'year' => 2222],
['title' => 'Still foooing', 'author' => 'FooBar', 'year' => 3333],
['title' => 'Happy Foo', 'author' => 'FooBar', 'year' => 4444],
],
['author' => 'Shakespeare', 'year' => 1611]
); // ['title' => 'Cymbeline', 'author' => 'Shakespeare', 'year' => 1611]
Строки
Функция camelize
Принимает на вход строку и возвращает ее версию, записанную в нотации lowerCamelCase:
<?php
\Funct\Strings\camelize('data_rate'); // 'dataRate'
\Funct\Strings\camelize('background-color'); // 'backgroundColor'
\Funct\Strings\camelize('-moz-something'); // 'mozSomething'
\Funct\Strings\camelize('_car_speed_'); // 'carSpeed'
\Funct\Strings\camelize('yes_we_can'); // 'yesWeCan
Функция contains
Проверяет, включает ли строчка подстроку:
<?php
\Funct\Strings\contains('PHP is one of the best languages!', 'one'); // true
Функция endsWith
Проверяет, оканчивается ли строчка на подстроку:
<?php
\Funct\Strings\endsWith("hello jon", 'jon'); // true
Выводы
В этом уроке перечислена лишь небольшая часть из всего многообразия, которое вы можете найти на GitHub в документации соответствующих библиотек. Изучить все функции в рамках курсов невозможно, да и не нужно. Достаточно периодически проходиться по документации популярных библиотек и просматривать, как они используются. Таким образом вы постепенно научитесь писать более понятный и лаконичный код.
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.