Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Полезные функции для работы с коллекциями PHP: Функции

В PHP стандартная библиотека небогата функциями для работы с коллекциями, строками или датами. Этот недостаток можно восполнить, подключив стороннюю библиотеку.

Например, в мире JavaScript есть стандарт lodash, без которого не обходится практически ни один проект. В PHP нет единого устоявшегося решения, но есть пачка небольших, которые используются в разных проектах. Часть из них основана на объектном синтаксисе — мы рассмотрим их в более поздних уроках. Часть стандартов — это набор обычных функций. Кроме того, часть функций относится к функциям высшего порядка, которые мы еще не проходили, но разберем уже в следующем уроке.

Объектные:

  • Collect
  • Stringy
  • Carbon

Использующие только функции:

  • Funct
  • Bottomline

Сразу скажем, что в реальной работе необходимость использовать такие библиотеки возникает почти сразу. Еще совсем недавно PHP-программисты создавали файлы с полезными функциями и таскали их из одного проекта в другой. Эти времена уже прошли, можно не тратить время на то, что уже делалось тысячу раз до нас.

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

Обратите внимание, что в указанных библиотеках иногда встречаются функции, которые уже встроены в сам язык. Так происходит по разным причинам:

  1. Согласованность. Такие функции-дубликаты делают для того, чтобы библиотека была полной
  2. Исправление ошибок PHP. В некоторых PHP-функциях по историческим причинам есть ошибки. Библиотеки могут сделать те же функции, но уже без ошибок
  3. Улучшение. Функции библиотек могут быть лучше стандартных: иметь другой порядок аргументов, расширенные возможности, убранные ограничения или просто понятное имя

Итак, начнем изучать функции библиотек. Первая на очереди — библиотека 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 в документации соответствующих библиотек. Изучить все функции в рамках курсов невозможно, да и не нужно. Достаточно периодически проходиться по документации популярных библиотек и просматривать, как они используются. Таким образом вы постепенно научитесь писать более понятный и лаконичный код.


Дополнительные материалы

  1. Функции стандартной библиотеки

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 21 ноября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»