Используйте пользовательскую функцию везде на сайте

1

Я исхожу из процедурного PHP и изучаю ООП с помощью Laravel. То, что я узнал до сих пор, очень интересно и облегчит жизнь разработчикам (это не моя работа). Итак, для всех моих веб-сайтов я использую свойство slug для всех статей, категорий и т.д. Я начал использовать "str_slug", предоставленный Laravel, который, похоже, выполняет эту работу на 99%. Проблема, которую я получаю, это когда у меня есть такой титул (на французском): "J'ai mangé une pomme", строка пули, которую я получаю, это: "jai-mange-une-pomme", который на французском языке неверен. Я бы хотел "j-ai-mange-une-pomme".

Это не проблема. Я могу сделать:

$slug = str_replace('\'','_',$input['name']);
$slug = str_slug($slug, '-');

Мне это подходит, но мне интересно, как использовать в любое время, когда я хочу его использовать. Я не хочу писать это снова и снова и снова. В процедурной, простой, я хотел бы написать функцию, такую как thePerfectSlug(){} в файле helpers.php (еще пример), и будет использовать include в верхней части моего index.php. Это сработает.

Но в ООП и особенно в Laravel (5.1), как я могу это сделать?

благодаря

  • 0
    Вытащите свою голову из процедурной модели и поместите ее в класс, сделайте его статическим, если нужно. Создание глобальной функции загрязняет корневое пространство имен. Каждый раз, когда вы делаете это, бог убивает котенка.
Теги:
oop
laravel-5.1
slug

1 ответ

2

Вы все еще можете добиться этого с нормальной функцией. Laravel использует свою собственную функцию, которая хранится в файле helpers.php. Вы можете создать свой собственный файл helpers.php и добавить его в свой основной файл composer.json на autoload.files.

Если вы хотите сделать это с помощью OOP, создайте свой метод, например App\Traits\Sluggify, и используйте его в любом классе, который ему нужен.

  • 1
    И еще один способ - создать фасад, объединяющий все вспомогательные функции. Но в целом, используйте создать вспомогательную библиотеку и добавить в composer.json рекомендуемый способ IMO
  • 0
    Спасибо за ваш ответ, я проверил в Интернете, как это сделать, и нашел некоторые результаты. Я попробую один из них, но меня интересует решение Laravel. Я видел, что настоящая функция написана на Str.php и является public static function а функция, которая ее вызывает, написана в helpers.php. Должен ли я сделать то же самое? Почему бы не использовать напрямую то, что написано в Str.php? Извините, если этот вопрос звучит действительно нуб :).
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню