最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何写一个属于自己的composer包|8月更文挑战

    正文概述 转载于:掘金(A梦多啦A)   2021-07-31   339

    前言

    对于开发的小伙伴们来说,代码包已经是开发过程中的家常便饭了。比如,php有composer,Java有maven,前端有npm,yarn,Mac程序安装有brew,Linux程序安装有yum。使用这些包,可以便于我们很好的管理代码引入的外部代码组件,有助于我们提高开发效率,同时也有助于我们代码管理更加优雅。下文主要就是分享个人自定义一个composer代码包,代码仅仅是作为演示示例,没有实际效果。同时也会不断更新,大家可以关注关注。

    具体实现

    创建一个远程git代码仓库。

    创建代码仓库,我是选择的GitHub作为远程仓库。创建好后,我们直接拉取到本地。后面的所有代码都是在该仓库下进行的。具体创建仓库和拉取代码就不做演示。

    创建源码目录

    我们在仓库(为了方便描述,后文便用项目一词来替代该词)下面,创建一个src的目录,用于存储我们实际的代码。 如何写一个属于自己的composer包|8月更文挑战

    编写实际代码

    下面这个文件,是后面实际需要调用的类。具体的演示代码,可以通过演示代码仓库进行查看。主要的作用就是利用工厂模式,Cache去调用实际的缓存类。

    <?php
    // composer演示代码
    declare(strict_types=1);
    
    // 这里的命名空间根据自己情况填写,后面生成的composer.json文件需要使用该命名空间。
    namespace Bruce;
    
    use Bruce\Client\Redis;
    
    class Cache
    {
        public $redisHandle = '';
    
        public function __construct()
        {
            $this->redisHandle = new Redis();
        }
    }
    

    创建好代码仓库中的所有文件,这时候我们就可以开始生成composer.json文件了。 如何写一个属于自己的composer包|8月更文挑战

    生成composer.json配置文件

    下面就是具体生成的过程了,记住一定要在项目的根目录下面使用composer init命令。

    composer init
    Welcome to the Composer config generator
    This command will guide you through creating your composer.json config.
    
    #项目命名空间
    Package name (<vendor>/<name>) [bruce_redis/redis]: bruce_redis/redis
    #项目描述
    Description []: composer test
    #作者信息
    Author [卡二条 <2665274677@qq.com>, n to skip]: 卡二条 <2665274677@qq.com>
    #输入最低稳定版本
    Minimum Stability []: dev
    #项目类型
    Package Type (e.g. library, project, metapackage, composer-plugin) []: library
    #授权类型
    License []: 
    Define your dependencies.
    
    #依赖信息
    Would you like to define your dependencies (require) interactively [yes]? yes
    #如果需要依赖,则输入要安装的依赖
    Search for a package: php
    Enter the version constraint to require (or leave blank to use the latest version): >=7.0
    Search for a package: 
    Would you like to define your dev dependencies (require-dev) interactively [yes]? yes
    Search for a package: php
    Enter the version constraint to require (or leave blank to use the latest version): >=7.0
    Search for a package: 
    {
      "name": "bruce_redis/redis",
      "description": "composer test",
      "type": "library",
      "require": {
        "php": ">=7.0"
      },
      "require-dev": {
        "php": ">=7.0"
      }
    
    #确认构建项目,生成composer.json
    Do you confirm generation [yes]? yes
    Would you like the vendor directory added to your .gitignore [yes]? yes
    Would you like to install dependencies now [yes]? yes
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Nothing to install or update
    Writing lock file
    Generating autoload files
    

    根据composer中文网翻译的是供应商名称和项目名称。实际指的就是,你在其他项目中安装该composer包时,在你其他项目的vendor目录下面名称。例如,我将示例的代码的该配置项,设置为bruce_redis/redis。我再其他项目使用该包,展现的形式就是下图的效果。 如何写一个属于自己的composer包|8月更文挑战

    配置自动加载

    在生成composer.json文件之后,我们的代码被安装到其他项目,还不能直接使用,因为不能为composer自动加载,我们还需要做如下配置,在composer.json文件中添加如下代码。

    "autoload": {
        "psr-4": {
          "Bruce\\": "src/"
        }
    }
    

    该配置项主要的目是为了,告知composer命名空间为Bruce的类,源码目录都在src下面,autoload_psr4.php文件再做文件加载时,就是根据这个目录去下载。这里的Bruce就是编写实际代码中提到的命令空间。如果你不是这个名字,改为自己的即可。例如,你写的是Alibab\Composer,自动加载中的配置就是下面的配置:

    "autoload": {
        "psr-4": {
          "Alibab\Composer\\": "src/"
        }
    }
    

    发布代码

    做好上面的配置之后,我们就可以将代码发布到packagist。首先我们需要将代码更新到GitHub仓库。登录packagist,然后点击右上角的submit按钮,在输入框中输入GitHub仓库地址即可。 如何写一个属于自己的composer包|8月更文挑战

    效果演示

    安装代码

    发布好代码之后,就可以直接在项目中引入该包。

    composer require bruce_redis/redis dev-master
    

    使用该命令之后,出现下图的结果,则证明安装成功了。你就可以按照GitHub仓库里面的示例代码进行操作了。 如何写一个属于自己的composer包|8月更文挑战

    自动加载

    在上面提到composer会自动加载,通过下图,我们可以发现composer根据配置自动去加载了文件。 如何写一个属于自己的composer包|8月更文挑战


    起源地下载网 » 如何写一个属于自己的composer包|8月更文挑战

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元