orbas/util

用于Laravel的库

0.2.1 2017-08-30 15:04 UTC

This package is auto-updated.

Last update: 2024-09-06 08:16:58 UTC


README

Build Status StyleCI

Laravel Util 提供了一些有用的方法,例如 enumpresenter

安装

要获取最新版本,只需使用 Composer 引入项目

$ composer require orbas/util

并在你的 config/app.php 中注册 Orbas\Util\ServiceProvider::class 服务提供者

枚举

枚举是一个包含一组命名常量的独特类型,称为枚举列表。

你可以更简单地使用它来自定义枚举。

创建枚举类

$ php artisan util:make:enum Gender

这将创建一个类到 app/Enums/ 文件夹

定义枚举

namespace App\Enums;

use Orbas\Util\Enum\Enumable;

class Gender implements Enumable
{
    /**
     *
     * @return array
     */
    public function create()
    {
        return ['female', 'male'];
    }
}

或者你可以定义键

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'
        ];
    }
}

享受使用它

生成性别集合

app('enum')->create('gender');

从键获取值

app('enum')->value(1, 'weekday'); // this will echo Monday  

使用门面

将类别名添加到 config/app.php 的别名数组中

  'aliases' => [
    // ...
      'Enum' => \Orbas\Util\Facades\Enum::class,
    // ...
  ],

然后你可以这样使用它

// equal to app('enum')->create('gender');
Enum::create('gender');
Enum::gender();

未来还将发布更多功能。

展示者

或者你可以称之为视图展示者。有时你需要在将数据放入之前执行一些逻辑。

例如

{{ $user->first_name }} {{ $user->last_name }}
{{ $user->gender == 0 ? 'female' : 'male' }}
{{ Carbon\Carbon::parse($user->birthday->format('d/m/Y') }}

展示者是一种模式,你可以将逻辑远离视图和模型。 (保持模型干净,并执行它应该做的事情。)

创建展示者类

$ php artisan util:make:presenter User

这将创建一个类到 app/Presenters 文件夹

编辑你的展示者逻辑

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('')
    }
}

将展示者特质添加到你的模型中

namespace App;

use Illuminate\Database\Eloquent\Model;
use Orbas\Util\Traits\Presenter;

class User extends Model
{
    use Presenter;   
}

用法

$user = App\User::find(1);

$user->present()->full_name;

// or
$user->present('full_name');

与枚举的多语言

展示者提供自动翻译。

enums.php 放到 resources/lang/YOUR_LOCALE/enums.php

// resources/lang/zh-TW/enums.php
return [
    'gender' => [    // enum name
        'female' => '',    // enum key => translation word
        'male'   => ''
    ]
];

展示者会为你翻译

$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');

许可证

Laravel Util 根据 MIT 许可证 (MIT) 许可。