• 开发 Laravel 扩展的基本流程


    创建一个空的laravel项目

    composer create-project --prefer-dist laravel/laravel pkg
    在新建的 laravel 项目中建立如下目录 qiangzhiwang	estpkgsrc,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 QiangzhiwangTestpkg;/**
     * Class Md5Hasher
     * @package QiangzhiwangTestpkg
     */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 QiangzhiwangTestpkg;
    use IlluminateSupportServiceProvider;
    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...
        */
           .......
        QiangzhiwangTestpkgMd5Hasher::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等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处

  • 相关阅读:
    OpenCV用读取矩阵,访问图像数据
    OpenCV_Add方法
    OpenCV_颜色直方图的计算、显示、处理、对比及反向投影
    sift算法研究_无匹配
    OpenCV_轮廓例子
    OpenCV_用鼠标在窗口画方形
    【转】数字图像处理中的形态学
    OpenCV_ 滑动条模拟按钮
    OpenCV_轮廓的查找、表达、绘制、特性及匹配
    图像的膨胀与腐蚀、细化
  • 原文地址:https://www.cnblogs.com/a609251438/p/12051810.html
Copyright © 2020-2023  润新知