加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

开发 Laravel 扩展的基本流程

发布时间:2020-05-25 08:22:17 所属栏目:PHP 来源:互联网
导读:创建一个空的laravel项目 composer create-project --prefer-dist laravel/laravel pkg 在新建的 laravel 项目中建立如下目录 qia

创建一个空的laravel项目

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

在新建的 laravel 项目中建立如下目录 qiangzhiwangtestpkgsrc,packages 目录和 app 目录同级。我们开发包的代码都放在这个 src 目录中,qiangzhiwang和 testpkg完全自定义。
mkdir -p packages/qiangzhiwang/testpkg/src

修改项目composer.json设定 PSR-4 命名空间

"psr-4": {
    "App": "app/","QiangzhiwangTestpkg" : "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等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读