zoukankan      html  css  js  c++  java
  • 开发 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等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处

  • 相关阅读:
    iOS中Zbar二维码扫描的使用
    SOJ 1135. 飞跃原野
    SOJ 1048.Inverso
    SOJ 1219. 新红黑树
    SOJ 1171. The Game of Efil
    SOJ 1180. Pasting Strings
    1215. 脱离地牢
    1317. Sudoku
    SOJ 1119. Factstone Benchmark
    soj 1099. Packing Passengers
  • 原文地址:https://www.cnblogs.com/a609251438/p/12051810.html
Copyright © 2011-2022 走看看