Больше любви к выразительному коду и меньше к этим многословным строкам
Одна из вещей, которые мне нравятся в любом проекте PHP, - это наличие глобальных помощников. Вы знаете, эти функции можно вызывать где угодно и удалять или сохранять много строк или многословие в одну, может быть, две, при этом размещая в одном месте любую логику.
$expected = from($this)->do('foo');
Проблема с самим Laravel заключается в том, что иногда не хватает помощников, которые он включает. Включены в основном быстрый доступ к службам (например, cache()
) или фабрикам (например, response()
), а также некоторые, которые помогут вам получить ожидаемый результат (например, data_get
).
Например, предположим, что мы хотим, чтобы функция вызывалась несколько раз, но в режиме ожидания между выполнениями, как будто нам нужно избежать ограничения скорости для внешнего API. Без помощника нам придется прибегнуть к созданию класса и поместить логику в общедоступный статический метод и, надеюсь, запомнить, где он находится.
class Logics { public static function logic_sleep($times, $sleep, $callback) { // Run and sleep between calls. } } Logics::sleep(4, 10, function() { // ... });
Использование этой техники делает ваш глобальный не таким глобальным. Поскольку это одна из многих вещей, которые мне нужны в моих проектах, я решил создать пакет с более глобальными помощниками:
Те помощники, о которых вы всегда мечтали
Основная идея глобального помощника, по крайней мере для меня, состоит в том, чтобы иметь фрагмент кода, который предлагает простоту, удобочитаемость и гибкость. Думайте о них как о маленьких швейцарских ножах, которые можно положить в карман.
Например, указанная выше функция может стать отдельной глобальной функцией, и мы можем вызывать ее буквально где угодно.
public function handle() { logic_sleep(10, 5, function () { $this->uploadRecords(); }); }
Помощник очень прост в использовании, но мы не узнаем, что, черт возьми, он делает за кулисами, если не углубимся в исходный код, что справедливо. В любом случае наличие глобальной функции одного или двух слов делает весь код более читабельным. А поскольку это наш собственный помощник, мы можем называть его как угодно.
Как добавить собственных помощников
Но это только один из множества помощников, которые я решил создать для вещей, которыми часто пользуюсь.
Чтобы добавить глобальные помощники в свой проект, вы можете просто добавить файл PHP с глобальными функциями в любом месте вашего проекта (желательно в корневой папке PSR-4) и сказать Composer, чтобы он загрузил его.
Вы можете добавлять сколько угодно файлов. Я решил разделить их на категории, как я сделал для своего пакета, чтобы не создавать стену текста, полную функций.
"autoload": { "psr-4": { "App\\": "app" }, "files": [ "app/Helpers/datetime.php", "app/Helpers/filesystem.php", "app/Helpers/http.php", "app/Helpers/objects.php", "app/Helpers/services.php" ] },
Я тоже открыт для предложений, так что попробуйте, если вы считаете, что это может быть полезно для вас: