Laravel Util
, (*1)
Laravel Util provides some useful method, such like enum and presenter, (*2)
Installation
To get the latest version, simply require the project using Composer:, (*3)
$ composer require orbas/util, (*4)
and register the Orbas\Util\ServiceProvider::class service provider in your config/app.php, (*5)
Enum
A enum is a distinct type that consists of a set of named constants called the enumerator list., (*6)
You can use it in a easier way to make your own enum., (*7)
Create a enum class
$ php artisan util:make:enum Gender, (*8)
That will create a class to app/Enums/ folder, (*9)
Define the enum
```php
namespace App\Enums;, (*10)
use Orbas\Util\Enum\Enumable;, (*11)
class Gender implements Enumable
{
/**
*
* @return array
*/
public function create()
{
return ['female', 'male'];
}
}
```, (*12)
or you can define the key, (*13)
namespace App\Enums;
use Orbas\Util\Enum\Enumable;
class Weekday implements Enumable
{
/**
*
* @return array
*/
public function create()
{
return [
1 => 'Monday',
2 => 'Tuesday',
3 => 'Wednesday',
4 => 'Thursday',
5 => 'Friday',
6 => 'Saturday',
7 => 'Sunday'
];
}
}
Enjoy using it
Generate a collection of gender, (*14)
app('enum')->create('gender');
Get value from key, (*15)
app('enum')->value(1, 'weekday'); // this will echo Monday
Use Facade
Add class aliases to the aliases array of config/app.php:, (*16)
'aliases' => [
// ...
'Enum' => \Orbas\Util\Facades\Enum::class,
// ...
],
then you can use it like this, (*17)
// equal to app('enum')->create('gender');
Enum::create('gender');
Enum::gender();
More functionality will be released in the future., (*18)
Presenter
or you can call it view presenter. Sometimes you have some logic need to be performed before you put the data., (*19)
for example, (*20)
{{ $user->first_name }} {{ $user->last_name }}
{{ $user->gender == 0 ? 'female' : 'male' }}
{{ Carbon\Carbon::parse($user->birthday->format('d/m/Y') }}
A presenter is a pattern that you can put the logic far from view and model. (keep model clean, and do what it should do.), (*21)
Create a presenter class
$ php artisan util:make:presenter User, (*22)
That will create a class to app/Presenters folder, (*23)
Edit your presenter logic
namespace App\Presenters;
use Orbas\Util\Presenter;
class User extends Presenter
{
public function full_name()
{
return $this->attribute('first_name') . ' ' . $this->last_name;
}
public function birthday()
{
return Carbon\Carbon::parse($this->attribute('')
}
}
Put present trait to your model
namespace App;
use Illuminate\Database\Eloquent\Model;
use Orbas\Util\Traits\Presenter;
class User extends Model
{
use Presenter;
}
Usage
$user = App\User::find(1);
$user->present()->full_name;
// or
$user->present('full_name');
Multi-language with Enum
Presenter provides auto translation., (*24)
Put enums.php to resources/lang/YOUR_LOCALE/enums.php, (*25)
// resources/lang/zh-TW/enums.php
return [
'gender' => [ // enum name
'female' => '女', // enum key => translation word
'male' => '男'
]
];
Presenter will translate for you, (*26)
$user = App\User::first();
$user->present('gender');
// or
$user->present()->gender;
//or given a enum name and locale
$user->present()->enum('gender', 'Gender', 'zh-TW');
License
Laravel Util is licensed under The MIT License (MIT)., (*27)