mercuryseries / laravel-helpers
动态方法助手
1.0.5
2020-05-30 15:42 UTC
Requires
- php: >=7.0.0
- illuminate/support: ~5.0|~6.0|~7.0|~8.0
README
在使用 Laravel 之前,我是 Ruby on Rails 的大粉丝,我最喜欢的 Ruby on Rails 的特性之一就是能够创建一个助手方法(在模块中),并且能够像全局方法一样调用它。
Module BooksHelper def format_price(book) if book.free? content_tag(:strong, 'Free!') else number_to_currency(book.price) end end end
<p><%= format_price(book) %></p>
这不是很酷吗?
现在,正如你可能猜到的,我想要在 Laravel 中拥有相同的东西。
哦,我应该说过,我现在有了和 Laravel 相同的东西 :)
免责声明:当然,你可以创建一个包含许多文件或仅包含一个全局文件助手的文件夹,并用 Composer 自动加载它,但我更愿意创建一个类,这样在测试时更加清晰。所以,每个人可能都不会喜欢它!
以下是如果你也想这样做的话的步骤
通过 Composer 安装此包
composer require mercuryseries/laravel-helpers
在 config/app.php
中注册包服务提供者,添加以下内容
MercurySeries\Helpers\HelpersServiceProvider::class,
在您的 app
文件夹中创建一个 Helpers
目录。
现在您可以在您的 app
文件夹中创建一个 Helpers
目录。
添加一些包含您的助手方法类的文件
PS:所有助手方法都需要是静态的。
<?php // File: app/Helpers/BooksHelper.php namespace App\Helpers; use App\Book; class BooksHelper { public static function formatPrice(Book $book) { if($book->isFree()) { return '<strong>Free!</strong>'; } else { return sprintf('$%f', number_format($book->price, 2, '.', '')); } } }
<?php // File: app/Helpers/PagesHelper.php namespace App\Helpers; class PagesHelper { public static function setActive($route) { // your code goes here } }
现在和我们一起享受使用助手方法带来的乐趣吧
{{ $formatPrice($book) }} {{ $setActive('home') }}
您也可以这样调用它
{{ App\Helpers\BooksHelper::formatPrice($book) }}
别忘了根据您的应用程序的根命名空间相应地更改 App
。但这正是我想避免的(那些冗长的内容)。
更多配置?
可以通过配置文件轻松更改 Helpers
文件夹名称和命名空间 App\Helpers
。只需发布并编辑它即可。
php artisan vendor:publish --provider="MercurySeries\Helpers\HelpersServiceProvider"
干杯!