用 composer 造轮子

php - 在 linux 上面使用 composer 安装 leon2012/snowflake,出现找不到类的错误(Uncaught Error: Class ‘xx‘ not found in) php什么在linux上面使用composer安装 leon2012/snowflake 会出现找不到类,php – Composer给出错误,“找不到类”,php - 在 linux 安装 leon2012/snowflake详细教程,php - 在 linux 上面使用 composer 安装 leon2012/snowflake,出现找不到类的错误(Uncaught Error: Class 'xx' not found in) 阅读详情

转载:http://blog.jayxhj.com/2016/05/basic-composer-package-development/

composer 是 PHP 的依赖管理工具,本篇文章就来说明如何构建一个包,并提交到 Packagist ,这样别人就可以方便地通过 composer 使用你的包了。

开发 composer 包有以下几个步骤:

  1. 初始化 composer.json 文件
  2. 定义命名空间及包名
  3. 实现包需要实现的功能
  4. 提交到 GitHub
  5. 在 Packagist 注册包

初始化 composer.json 文件

安装好 composer 后即可在本地运行 composer init 通过交互式命令行设置 composer.json 。

下面介绍其中的几个属性,以及常规的设置:

name

此属性定义包名,以 / 隔开,前面的为供应商名字,后面为包名,供应商代表 Packagist 网站为开发者提供的唯一的名字,用来组织包以及防止命名冲突。所以提交时最好先访问 https://packagist.org/packages/yourvendorname 将 url 中的 yourvendorname 替换为你想要取的名字,如果页面没有 404 ,说明已经被注册了。

license

许可证。关于许可证,建议看两篇文章,开源项目 license 介绍 、 如何选择 license

require

安装当前包所需的依赖。只有所有依赖被安装当前包才会被安装。

autoload

此配置下主要是 PSR-4 或者 PSR-0 设置,更推荐使用 PSR-4 标准。

http://json-schema.org/ 上介绍了 JSON Schema 的定义以及各个语言对其各种功能的实现,有 validator 的实现,其中 JSON Schema Validator 是在线的验证服务。其实最简单的就是使用 composer validate composer.json 来验证文件是否是有错误。

项目结构

项目结构是典型的 MVC 结构,


.
└── geo
    └── geosso
        ├── LICENSE
        ├── README.md
        ├── composer.json
        └── src
            ├── Contracts
            ├── Http
            │   ├── Controllers
            │   ├── Middleware
            │   └── Requests
            ├── ParamsBean
            ├── Providers
            ├── Support
            └── config

12 directories

LICENSE、README.md 及 composer.json 是运行 tree -d 之后手工添加上去的。

项目根目录定义在 src 下,在 composer.json 中也有定义,这样当 composer 加载这个包时就知道如何通过命名空间去解析文件路径。

Http 目录代表请求响应,之下的 Controllers 表示合法请求的控制器,Middleware 代表请求的第一道关卡,通过中间件去拦截请求,Requests 去获取前端请求并对请求过滤。

Contracts 代表接口定义。ParamsBean 代表应用层与底层服务沟通时的参数封装,通过 Bean 去获取各个参数,而不是传递 array 使得调用一致,并且强制接口调用时做类型检测,可以很大程度上统一各层之间的参数传递。

Providers 代表 Laravel 的服务容器,通过服务容器,可以注册路由与配置,加载助手类,绑定接口与其实现。

Support 就是一些助手类,对常用的与逻辑无关的功能的封装,config 代表应用自己的配置,通过 config 可以方便地将配置设置并使用全局函数 config() 调用。

提交至 GitHub

按照前面的步骤,一个包就有了基本的骨架,接下来就是上传至 GitHub ,配置项目,集成持续集成服务,发布开源项目许可证。

GitHub 初始化项目时可以选择生成 .gitignore 文件,选择许可证,初始化 README.md 文件,切换至本地的项目目录后,按如下步骤即可将目录上传至 GitHub:

git init # 初始化仓库
git remote set-url origin --push --add git@github.com:jayxhj/geosso.git # 添加远程追踪仓库地址
git add .
git commit
git push origin master

提交至 Packagist

Packagist 为 composer 默认获取包元数据信息的地址,从 Packagist 获取到元数据信息后,再从 GitHub 上拉取代码。因此,当把你开发的包上传至 GitHub 后还需要将其在 Packagist 注册,这样全世界的人都能通过 composer 去拉去你的代码了。

提交至 Packagist 只需三个步骤:

  1. 注册帐号
  2. 在 https://packagist.org/packages/submit 提交开发包
  3. 设置 webhook 以便提交包更新后能及时地同步至 Packagist

自此,一个基本的包开发就结束了。通过 composer 来管理 PHP 的依赖,通过编写 composer package 去扩展自己的类库,通过引入其他的类库来填充自己的功能,就不用重复造轮子了。

Laravel开发-laravel-snowflake Laravel开发-laravel-snowflake 为拉拉维尔雪花。 立即下载

相关推荐

PHP生成唯一ID之SnowFlake算法

snowflake算法是个啥?首先我来提出个问题,怎么在分布式系统中生成唯一性id并保持该id大致自增?在twitter中这是最重要的业务场景,于是twitter推出了一种snowflake算法。

探索雪崩之美 —— Snowflake在Laravel中的优雅落地

探索雪崩之美 —— Snowflake在Laravel中的优雅落地 在当今的数字化时代,每个应用都需要高效且唯一地标识其数据。Twitter的创新之作——Snowflake算法,已成为生成这类标识符的理想选择。今天,我们为您隆重推荐一款专为Laravel框架设计的开源项目【Snowflake】,它巧妙封装了Godruoyi的Snowflake PHP库,带来了集成便捷、性能高效的独特体验。 项目介...

gitblog_00444的博客 506

MATLAB2022b安装

图文并茂,手把手教会你怎么安装MATLAB2022b

1万+

【亲测免费】 PHP-Snowflake 指南

**PHP-Snowflake** 是一个基于[Twitter Snowflake](https://engineering.twitter.com/blog/2010/06/40-bit-hashing.html)算法的ID生成器,适用于PHP开发。它允许您在分布式环境中生成具有唯一性的、无冲突的ID,这些ID按时间排序并且可以被轻松地解析回其组成部分。这个库非常适合那些需要大量唯一标识符且希望...

gitblog_00236的博客 533

CCC数字钥匙3.0标准解读(16)

介绍通信过程最重要部分:身份认证和加密.介绍需要身份认证的过程和需要加密的数据及过程.

weixin_41738640的博客 1531

Sublime Text4代码配色自定义方案

关于Sublime Text对于我的使用体验,只能说内置的代码主题真的都太low了,一点都不好看。所以接下来我分享一下我自定义代码配色。当然,大家也可以通过我给的中文翻译注释来自定义自己喜欢的颜色。废话不多说,直接上代码直接将代码复制粘贴到:Preferences > Customize Color Scheme 即可。},"globals":"foreground": "var(white)", // 前景色。

追求细节,成就完美 6026

php绘制雪花墙,基于雪花算法的 PHP ID 生成器

Snowflake 是 Twitter 内部的一个 ID 生算法,可以通过一些简单的规则保证在大规模分布式情况下生成唯一的 ID 号码。其组成为:第一个 bit 为未使用的符号位。第二部分由 41 位的时间戳(毫秒)构成,他的取值是当前时间相对于某一时间的偏移量。第三部分和第四部分的 5 个 bit 位表示数据中心和机器ID,其能表示的最大值为 2^5 -1 = 31;最后部分由 12 个 bit...

weixin_36414025的博客 452

Lumerical FDTD新手教程:5步搞定MMI波导光谱模拟(附避坑指南)

本文提供Lumerical FDTD新手教程,详细讲解5步完成MMI波导光谱模拟的实用方法,包括环境准备、结构建模、光源配置、仿真优化和结果分析。特别针对多模干涉耦合器(MMI)的模拟难点,提供避坑指南和优化策略,帮助光学工程师快速掌握FDTD仿真技术。

kite3的博客 358

php漂浮雪花,基于雪花算法的 PHP ID 生成器

Snowflake 是 Twitter 内部的一个 ID 生算法,可以通过一些简单的规则保证在大规模分布式情况下生成唯一的 ID 号码。其组成为:第一个 bit 为未使用的符号位。第二部分由 41 位的时间戳(毫秒)构成,他的取值是当前时间相对于某一时间的偏移量。第三部分和第四部分的 5 个 bit 位表示数据中心和机器ID,其能表示的最大值为 2^5 -1 = 31;最后部分由 12 个 bit...

weixin_27964579的博客 469

直流有刷电机控制 - 认识电机(一)

电机控制学习

u011030644的博客 917

保姆级教程:手把手教你用Jacquard V2数据集训练机器人抓取模型(附完整代码)

本文提供了一份详细的保姆级教程,手把手教你使用Jacquard V2数据集训练机器人抓取模型。从环境配置、数据准备到模型架构设计、训练优化和实际部署,全程解析并附完整代码,帮助开发者快速掌握视觉抓取技术。

weixin_29031057的博客 313

告别重复造轮子:用Cursor Composer的Agent模式,5分钟搞定React用户管理模块

本文介绍了如何利用Cursor Composer的Agent模式快速构建React用户管理模块。通过自然语言指令,开发者可以在5分钟内生成包含列表展示、搜索过滤、增删改查等功能的完整代码,大幅提升开发效率。文章详细展示了从环境配置到高级功能集成的全流程,特别适合需要快速实现标准功能的场景。

weixin_33734785的博客 338

【PLIO学习总结】laserMapping中的时间戳与状态更新逻辑

本文仅用于个人学习总结记录。如有错误,请批评指正。

larrydong的博客 1646

Composer的安装

composer 先来大概介绍一下composer  Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。  说的简单一点,Composer 是一个新的安装包管理工具,服务于 PHP 生态系统。它实际上包含了两个部分:Composer 和 Packagist。 ...

amberom的专栏 2385

TIA博途WINCC的触摸屏VB脚本入门指南(嵌入式)

通过编写事件处理程序,您可以响应触摸屏元素的各种事件,并实现自定义的功能。本文将为您提供TIA博途WINCC触摸屏VB脚本的入门指南,帮助您了解基本的脚本编写和嵌入式开发。假设我们有一个名为"Button1"的按钮元素,当用户点击该按钮时,触发相应的事件处理程序,并在触摸屏上显示一条消息。然后回到触摸屏界面编辑器,在按钮元素的属性窗口中找到"按下"事件,并选择刚才创建的脚本文件作为事件处理程序。现在,当用户点击按钮时,触摸屏将执行相应的事件处理程序,并显示一条消息框,内容为"按钮被点击了!

CodeSageX的博客 4416

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

浅谈php中composer的理解

要谈composer,首先我们要了解什么是composer,为什么我们要用composer,composer帮助我们解决了什么问题?那么带着这三个疑问,我们往下看: 在php的发展历程中,刚开始大家的开发都是面向过程式的开发,就是用到什么就开发什么,也就是大家经常说的造轮子,这种方式不仅使开发效率低,而且不利于多人协作,后来随着开源社区各种平台对开源的支持,开发从面向过程走向...

qq_38933970的博客 454

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

以最简单的方式,整合微信、支付宝、银联、百度、字节跳动支付。

开发了多次支付,每次都要翻文档、找之前的项目复制过来,费时费事,为了便于支付的开发,干脆自己去造了一个简单轮子,整合支付(微信、支付宝、银联、百度、字节跳动)相关开发。欢迎 Star,欢迎 PR!

安之若素 601

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

我的php常用轮子composer配置

[size=x-large][b]composer linux 安装[/b][/size] [code="java"] cd /usr/local/bin curl -s http://getcomposer.org/installer | php chmod a+x composer.phar alias composer='/usr/local/bin/composer.phar' ...

xieye114的专栏 351

我的第二个yii2扩展发布 yii2-emoji

原文链接:nai8.me/article/my-… alt 扩展的github页面:github.com/abei2017/yi… 这个扩展使用了 emojione/emojione 库,可能你会问为何要重复造个轮子,理由如下: 为何要做这个 使用更方便,不用新建对象等等了. 增加了配置功能,和yii2的config/web.php完美结合,只需要在里面建立一个yii2Emoji参数项就可以...

weixin_34335458的博客 232

composer 依赖包版本冲突_Composer具体安装方法

composer 作为依赖管理工具,使用频率还是挺高的。特别是对于我这种比较懒的程序猿,有现成轮子的时候坚决不自己重复造轮子。它主要有三部分构成:命令行工具,包仓库,代码库。包仓库就是我们常说的 composer 源,你也可以在上面发布自己的包,后续的实战我会具体介绍发布流程;代码库比如较常见的 github,gitlab 等等;命令行工具比如 windows 的 cmd,mac 的终端等等;安装...

weixin_31201555的博客 2745

Composer 使用

composer是什么:                                                                                如果你知道yum、apt-get、npm、bower等命令中的一种或者多种,那么,你也能很快知道composer是什么了。没错,它就是PHP里快速安装类库的。平时,我们安装一个PHP类库,需要搜索->下载;使用...

qq_35255775的博客 867

Composer 安装与使用

Composer使用 是什么 如果你知道yum、apt-get、npm、bower等命令中的一种或者多种,那么,你也能很快知道composer是什么了。没错,它就是PHP里快速安装类库的。平时,我们安装一个PHP类库,需要搜索->下载;使用composer,我们只要知道包名,直接composer insatll就可以了。 PHP 语言本身就带有强大的网络功能、文件管理

houzhyan-博客 4211

Composer具体安装方法

composer 作为依赖管理工具,使用频率还是挺高的。特别是对于我这种比较懒的程序猿,有现成轮子的时候坚决不自己重复造轮子。 它主要有三部分构成:命令行工具,包仓库,代码库。包仓库就是我们常说的 composer 源,你也可以在上面发布自己的包,后续的实战我会具体介绍发布流程;代码库比如较常见的 github,gitlab 等等;命令行工具比如 windows 的 cmd,mac 的终端等等;...

maxiaojing的博客 590

Composer使用

是什么 如果你知道yum、apt-get、npm、bower等命令中的一种或者多种,那么,你也能很快知道composer是什么了。没错,它就是PHP里快速安装类库的。平时,我们安装一个PHP类库,需要搜索->下载;使用composer,我们只要知道包名,直接composer insatll就可以了。 PHP 语言本身就带有强大的网络功能、文件管理功能和丰富的系统 API,Composer 也只

三生烟火的博客 1260
上一篇: laravel Route 用法
下一篇: Nginx 和 Apache 为PHP增加环境变量
Webben
博客等级 码龄10年 19粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值