寫一個Laravel中文驗證擴充套件包

liaosp發表於2021-09-01

?Laravel 驗證中文,手機號,身份號

github.com/liaoshengping/laravel-v...

使用

$data = ['name' => '小廖one'];

$v = \Illuminate\Support\Facades\Validator::make($data, ['name' => 'chsAlpha']);
標識 說明
chs 驗證某個欄位的值只能是漢字
chsAlpha 驗證某個欄位的值只能是漢字、字母
chsAlphaNum 驗證某個欄位的值只能是漢字、字母和數字
chsDash 驗證某個欄位的值只能是漢字、字母、數字和下劃線_及破折號-
mobile 驗證手機
idCard 身份證

先安裝 超哥的 package-builder

切換到一個laravel 目錄下建立 pkg cd pkg 執行:

package-builder build laravel-validate-ext

輸出內容如下
在這裡插入圖片描述

進入 src 建立 LaravelValidateExtProvider.php ,內容如下

<?php


namespace Liaosp\LaravelValidateExt;
use Illuminate\Support\ServiceProvider;

class LaravelValidateExtProvider extends ServiceProvider
{
    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //todo  這邊寫邏輯
        die('helloworld');
    }
}

進入包 composer.json編輯

新增擴充套件:

    "extra": {
        "laravel": {
            "providers": [
                "Liaosp\\LaravelValidateExt\\LaravelValidateExtProvider"
            ]
        }
    },

現在需要把這個提供類,新增到你的laravel專案中,透過composer 的方式匯入

在laravel 專案中 composer.json 中新增

    "repositories": [
        {
            "type": "path",
            "url": "pkg\\laravel-validate-ext"
        }
    ]

執行:

composer require liaosp/laravel-validate-ext dev-master

如果這步有啥報錯,比如命名之類的錯誤了,需要把他移除掉composer remove 再安裝

如何測試 我這個包是否已經匯入到laravel 框架了呢?我們在剛剛提供類中斷電一下

    public function boot()
    {
         die('helloworld');
    }

因為laravel 載入的時候都先執行boot 初始化

php artisan test

可以看到 'helloworld'

到這邊,你就掌握了laravel composer 包的開發了,具體實現我已經上傳到了github 有興趣的可以看一下。
github.com/liaoshengping/laravel-v...

        $v = Validator::make($request->all(), [
            'name' => "idCard"
        ]);

        if ($v->fails()) {
            return $v->errors()->first();
        }

輸出是沒有問題的,到這就完成了。
在這裡插入圖片描述

那一般來說這樣就已經可以了,但是一個合格的包,還需要編寫測試

新建測試檔案:

pkg\laravel-validate-ext\tests\ValidateTest.php

寫入剛剛寫好的測試擴充套件,比如:

    /**
     * 驗證某個欄位的值只能是漢字、字母和數字
     */
    public function testChsAlphaNum()
    {
        $data = ['name' => '小L'];

        $v = \Illuminate\Support\Facades\Validator::make($data, ['name' => 'chsAlphaNum']);

        $this->assertTrue(!$v->fails());

        $data = ['name' => '小L.'];

        $v = \Illuminate\Support\Facades\Validator::make($data, ['name' => 'chsAlphaNum']);

        $this->assertFalse(!$v->fails());
    }

具體的測試上傳到了github.com/liaoshengping/laravel-v...

Laravel 執行測試

php artisan test pkg/laravel-validate-ext

在這裡插入圖片描述
可以看到剛剛寫的測試都已經透過,說明大機率是沒問題了,下面就上傳到packagist 可以供其他小夥伴使用了。

同學們一般Pr 的時候最好也寫測試檔案,這樣作者就可以執行,沒有問題再合併

如何 Pr 一個開源composer專案

我們打一個標籤
在github 建立倉庫: laravel-validate-ext 把剛剛的包傳到這邊倉庫

git tag v1.0.0
git push origin --tags

登入 packagist.org/
在這裡插入圖片描述
把github 地址 輸進去提交,就完成了

在這裡插入圖片描述
packagist.org/packages/liaosp/lara...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章