開發 Laravel 擴展的基本流程


創建一個空的laravel項目

composer create-project --prefer-dist laravel/laravel pkg

 

在新建的 laravel 項目中建立如下目錄 qiangzhiwang\testpkg\src,packages 目錄和 app 目錄同級。我們開發包的代碼都放在這個 src 目錄中,qiangzhiwang和 testpkg完全自定義。
mkdir -p packages/qiangzhiwang/testpkg/src

 

修改項目composer.json設定 PSR-4 命名空間

"psr-4": {
    "App\\": "app/",
    "Qiangzhiwang\\Testpkg\\" : "packages/qiangzhiwang/testpkg/src"
},

 

進入命令行執行composer dump-autoload將autoload重新生成一次

composer dump-autoload

 

在qiangzhiwang/testpkg/src目錄下書寫一個簡單的Md5Hasher類

<?phpnamespace Qiangzhiwang\Testpkg;/**
 * Class Md5Hasher
 * @package Qiangzhiwang\Testpkg
 */class Md5Hasher{
    /**
     * @param $value
     * @param array $options
     * @return string
     */
    public function make($value, array $options =[])
    {
        $salt = isset($options['salt']) ? $options['salt'] :"";
        return hash('md5',$value . $salt);
    }
    /**
     * @param $value
     * @param $hashValue
     * @param array $options
     * @return bool
     */
    public function check($value , $hashValue , array $options=[])
    {
        $salt = isset($options['salt']) ? $options['salt'] :"";
        return hash('md5',$value . $salt) === $hashValue;
    }
}

 

接下來就是怎么把這個類融入到laravel容器中

php artisan make:provider Md5HasherProvider

 

執行完以上命令后,會在app/Providers目錄下生成Md5HasherProvider.php將此文件移動到packages/qiangzhiwang/testpkg/src目錄下

mv app/Providers/Md5HasherProvider.php packages/qiangzhiwang/testpkg/src/Md5HasherProvider.php

 

移動完成之后,要進行簡單的修改以及完成容器注冊

<?php
namespace Qiangzhiwang\Testpkg;
use Illuminate\Support\ServiceProvider;
class Md5HasherProvider extends ServiceProvider{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
        $this->app->singleton("md5hash",function (){
            return new Md5Hasher();
        });
    }
}

 

在config/app.php文件中,providers數組中最后一行添加上

'providers' => [

    /*
    * Application Service Providers...
    */
       .......
    \Qiangzhiwang\Testpkg\Md5Hasher::class
],

 

測試使用

php artisan tinker
>>> app("md5hash")->make("123456")
=> "e10adc3949ba59abbe56e057f20f883e"

 

發布包提供給其他開發者下載,需要進入packages/qiangzhiwang/testpkg進行操作

composer init

然后通過git工具發布到github上,並同步https://packagist.org上,方可進行composer進行安裝使用

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限於:分布式架構、高可擴展、高性能、高並發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,需要的可以加入我的官方群點擊此處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM