【问题标题】:Use a custom function everywhere in the website在网站的任何地方使用自定义函数
【发布时间】:2016-01-08 14:43:01
【问题描述】:

我来自程序 PHP,并且正在使用 Laravel 学习 OOP。到目前为止我学到的东西非常有趣,并且会减轻我的开发人员的生活(顺便说一句,这不是我的工作)。 因此,对于我所有的网站,我对所有文章、类别等都使用 slug 属性。 我开始使用 Laravel 提供的“str_slug”,它似乎可以完成 99% 的工作。我得到的问题是当我有这样的标题(法语):“J'ai mangé une pomme”时,我得到的 slug 字符串是:“jai-mange-une-pomme”,法语是不正确的。我想要“j-ai-mange-une-pomme”。

这不是一个真正的问题。我能做到:

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

它很适合我,但我想知道如何在我想使用它的任何时候使用它。我不想一次又一次地写它。 在程序上,这很容易,我会在 helpers.php 文件(仍然是一个示例)中编写一个函数,例如 thePerfectSlug(){},并将在我的 index.php 顶部使用一个包含。这样就可以了。

但是在 OOP 中,尤其是在 Laravel (5.1) 中,我该怎么做呢?

谢谢

【问题讨论】:

  • 把你的头脑从程序模型中解放出来,把它放到一个类中,如果你必须的话,让它成为一个公共静态。使其成为全局函数会污染根命名空间。每次你这样做,上帝都会杀死一只小猫。

标签: php oop laravel-5.1 slug


【解决方案1】:

您仍然可以通过正常功能实现它。 Laravel 使用他自己的函数,这些函数存储在 helpers.php 文件中。您可以制作自己的 helpers.php 文件并将其添加到 autoload.files 的主 composer.json 文件中。

如果您想以 OOP 方式执行此操作,请使用您的方法创建一个类似 App\Traits\Sluggify 的特征,并在任何需要它的类中使用它。

【讨论】:

  • 还有另一种方法是创建一个包含所有支持功能的外观。但一般来说,使用创建一个辅助库并添加到 composer.json 是 IMO 推荐的方式
  • 感谢您的回答,我在网上查看了如何执行此操作并找到了一些结果。我会尝试其中一个,但我想知道 Laravel 解决方案。我已经看到真正的函数是用 Str.php 编写的,是一个 public static function 和一个调用它的函数,用 helpers.php 编写。我应该这样做吗?为什么不直接使用 Str.php 中的内容?对不起,如果这个问题听起来真的很菜:)。
  • 我认为这样做是为了让代码开发人员写得更清晰,更容易写。它不仅涉及 Str 的东西,还涉及 Arr(ay) 甚至更多。编写 array_get 然后 Arr::get 并指定使用此类更快。这就是为什么它被称为 helper :) 但是请注意 env helper 不调用任何类,而是在函数中包含所有逻辑。
  • 所以我看了一下,我在 App 中创建了一个文件夹,我叫 Customs 和一个 php 文件 helpers.php。由于 cmets 的内联模式,我无法编写它,但它似乎看起来不错。我实际上复制/粘贴了 Laravel 函数并添加了我的 str_replace。听起来不错,但它不加载...... composer.json 的 auload 部分似乎说它自动加载所有应用程序文件夹所以......你能帮我吗?顺便谢谢你的解释:)
猜你喜欢
  • 2013-09-21
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
相关资源
最近更新 更多