AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
# 创建composer项目 # **建立自己的composer包** composer 包的平台:[packagist.org](https://packagist.org/),这里面包含了大量的优秀的安装包 **1、创建自己的github仓库** 点击 [New repository](https://github.com/new)创建自己的github仓库,命名为test ![](https://img.kancloud.cn/b2/e0/b2e0a81d23f4cf211196a99ddf07dddd_268x260.png) **2、克隆项目** git定位到D:\\下键入: ``` <pre class="calibre10">``` git clone git@github<span class="token3">.</span>com<span class="token3">:</span>lichihua<span class="token1">/</span>test<span class="token3">.</span>git ``` ``` 克隆后:D:\\目录下会生成D:\\test目录 **3、创建 Composer 配置文件** 在项目根目录`D:\test`创建 Composer 配置文件 composer.json,可以使用命令`compser init`创建也可以手动创建,最终文件内容大体如下: ``` <pre class="calibre10">``` <span class="token3">{</span> <span class="token">// "name": "一般有供应方名或者作者名/项目名", //github的用户名(个人或团体)+项目名 </span> <span class="token2">"name"</span><span class="token3">:</span> <span class="token2">"lichihua/test"</span><span class="token3">,</span> <span class="token">//发布第三方包时,packagist包名与此名一致 composer require lichihua/test</span> <span class="token2">"description"</span><span class="token3">:</span> <span class="token2">"该项目描述"</span><span class="token3">,</span> <span class="token2">"authors"</span><span class="token3">:</span> <span class="token3">[</span> <span class="token3">{</span> <span class="token2">"name"</span><span class="token3">:</span> <span class="token2">"作者名"</span> <span class="token3">}</span> <span class="token3">]</span><span class="token3">,</span> <span class="token2">"license"</span><span class="token3">:</span> <span class="token2">"MIT"</span><span class="token3">,</span> <span class="token2">"require"</span><span class="token3">:</span> <span class="token3">{</span> <span class="token2">"php"</span><span class="token3">:</span> <span class="token2">">=5.4"</span> <span class="token3">}</span><span class="token3">,</span> <span class="token2">"autoload"</span><span class="token3">:</span> <span class="token3">{</span> <span class="token2">"psr-0"</span><span class="token3">:</span> <span class="token3">{</span> <span class="token">//根命名空间最好是项目名或【供应方名或者作者名】/项目名 方便开发者记忆 不过项目名代下划线如think_test 这种可以改成 thinktest</span> <span class="token2">"Lichihua\\Test\\"</span><span class="token3">:</span> <span class="token2">"src/"</span> <span class="token">//use Lichihua\Test\...</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token3">}</span> ``` ``` **4、编写及测试文件** 定义好以后在composer.json同文件下的src下编写测试类,详情请参照`composer自动加载讲解`章节 > 压缩源(src)文件,生成压缩包到(dest),dest一般和src配对出现 目录结构参照: ``` <pre class="calibre10">``` D<span class="token3">:</span><span class="token1">/</span> ├─test 应用目录<span class="token3">(</span>www<span class="token3">)</span> │ ├─composer<span class="token3">.</span>json composer 定义文件 │ ├─<span class="token3">.</span>gitignore │ ├─README<span class="token3">.</span>md README 文件 │ ├─src 项目目录 │ │ ├─Lichihua 目录 │ │ │ ├─Test 目录 │ │ │ │ ├─User<span class="token3">.</span>php User类测试文件 │ │ │ │ ├─Tools<span class="token3">.</span>php Tools类测试文件 │ │ │ │ └─ <span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> │ │ │ │ │ │ │ └─ <span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> │ │ │ │ │ ├─Client<span class="token3">.</span>php 测试文件<span class="token6">1</span> │ │ ├─Service<span class="token3">.</span>php 测试文件<span class="token6">2</span> │ │ └─ <span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> 更多类文件 │ ├─index<span class="token3">.</span>php 入口文件测试编写的类 │ │ │ └─<span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> │ ├─<span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> ``` ``` 使用 composer install 或者 composer update 更新下数据 测试是否加载成功 **5、添加忽略文件** 然后编辑.gitignore文件,将lock文件放到忽略文件中,如下: ``` <pre class="calibre10">``` <span class="token1">/</span>vendor<span class="token1">/</span> composer<span class="token3">.</span>lock ``` ``` **6、上传到github** 具体参考git的文档 ``` <pre class="calibre10">``` git add <span class="token3">.</span> git reset HEAD <span class="token3">.</span> <span class="token">//回退 git add的内容</span> git commit <span class="token1">-</span>m <span class="token2">"提交说明"</span> git push origin master ``` ``` **7、提交到[packagist](https://packagist.org/packages/submit)这个网站上** 点加submit Repository URL (Git/Svn/Hg)下的文本框里填写github的地址 `git@github.com:lichihua/test.git`,再点击check ,检测成功点击提交则成功 ![](https://img.kancloud.cn/5c/4f/5c4f22d9d8958b1d2402cb9837754ce1_833x154.png) ![](https://img.kancloud.cn/ce/6e/ce6e8785c0743ae2a6aa81062161803c_1282x279.png) 设置代码更新,同时能让[packagist.org](http://packagist.org/)自动更新(默认是自动更新的) 如果未绑定,可以这样设置:"settings" -> “Webhooks” -> "Add webhook" -> 1. Payload URL填写:“[packagist.org/api/github”](https://packagist.org/api/github%E2%80%9D) 2. Content type填写:“application/json” 3. Secret填写:“packagist提供的token” 4. 其他的默认即可 5. 点击“Add webhook” 完成。 ![](https://img.kancloud.cn/11/be/11beab3d270795bf300658fb044ccdb2_1304x515.png) **8** 另外一个项目中,加载这个包`composer require lichihua/test` 测试不能成功提示没有找到版本,这是因为没有打标签tag 没有打 tag 的要指定 dev,完整命令`composer require "lichihua/test @dev"` git页面我们切换到test项目根目录,提交修改,打一个v0.1的tag,然后提交tag到远程github仓库 git push <远程主机名> <本地分支名> <远程分支名> tagName ``` <pre class="calibre10">``` git tag <span class="token1">-</span>a v0<span class="token3">.</span><span class="token6">1</span> <span class="token1">-</span>m <span class="token2">"第一个版本"</span> git push origin v0<span class="token3">.</span><span class="token6">1</span> ``` ``` github当前项目里点击release,发布一个版本 进入后在点击右侧的[Draft a new release](https://github.com/lichihua/test/releases/new))按钮 有三个文本框 分别是版本、版本说明标题、版本说明 填写好以后点击Publish release提交 参考<https://www.jianshu.com/p/280acb6b0b22> ![](https://img.kancloud.cn/49/05/49053f693033fa3fb98e8feb3fc84ac5_1039x434.png) ![](https://img.kancloud.cn/56/b6/56b688585e6863be93cfd565ee081ca7_977x594.png) 再次`composer require lichihua/test`目录结果 ``` <pre class="calibre10">``` vender ├─composer ├─lichihua │ ├─test 应用目录<span class="token3">(</span>www<span class="token3">)</span> │ │ ├─composer<span class="token3">.</span>json composer 定义文件 │ │ ├─<span class="token3">.</span>gitignore │ │ ├─README<span class="token3">.</span>md README 文件 │ │ ├─src 项目目录 │ │ │ ├─Lichihua 目录 │ │ │ │ ├─Test 目录 │ │ │ │ │ ├─User<span class="token3">.</span>php User类测试文件 │ │ │ │ │ ├─Tools<span class="token3">.</span>php Tools类测试文件 │ │ │ │ │ └─ <span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> │ │ │ │ │ │ │ │ │ └─ <span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> │ │ │ │ │ │ │ ├─Client<span class="token3">.</span>php 测试文件<span class="token6">1</span> │ │ │ ├─Service<span class="token3">.</span>php 测试文件<span class="token6">2</span> │ │ │ └─ <span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> 更多类文件 │ │ ├─index<span class="token3">.</span>php 入口文件测试编写的类 │ │ │ │ │ └─<span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> │ │ │ ├─test2 │ │ │ ├─<span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> │ ├─autoload<span class="token3">.</span>php │ └─<span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> composer<span class="token3">.</span>json ``` ``` ``` <pre class="calibre10">``` <span class="token3">{</span> <span class="token2">"require"</span><span class="token3">:</span> <span class="token3">{</span> <span class="token2">"lichihua/test"</span><span class="token3">:</span> <span class="token2">"^0.2.0"</span> <span class="token3">}</span> <span class="token3">}</span> ``` ``` `D:\phpstudy_pro\WWW\wwwdemo1.com\vendor\lichihua\test\composer.json` ``` <pre class="calibre10">``` <span class="token3">{</span> <span class="token3">.</span><span class="token3">.</span><span class="token3">.</span> <span class="token2">"autoload"</span><span class="token3">:</span> <span class="token3">{</span> <span class="token2">"psr-4"</span><span class="token3">:</span> <span class="token3">{</span> <span class="token2">"Dash\\tools\\"</span><span class="token3">:</span><span class="token2">"src"</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token3">}</span> ``` ``` > psr-4的规则:"root命名空间\\":"起始路径", > root命名空间:Dash\\tools\\ > 起始路径:src > 对应文件的路径:起始路径+ \[额外路径\] + 类文件(必须与类名一致) > 即:src+church+TestClass1.php > 使用时 > use root命名空间\[\\额外路径\]\\类名 > new \\root命名空间\[\\额外路径\]\\类名() `D:\phpstudy_pro\WWW\www.demo1.com\vendor\lichihua\test\src\church\TestClass1.php` ``` <pre class="calibre10">``` <span class="token1"><</span><span class="token1">?</span>php namespace Dash\tools\church<span class="token3">;</span> class <span class="token4">TestClass1</span><span class="token3">{</span> public <span class="token5">function</span> <span class="token4">show</span><span class="token3">(</span><span class="token3">)</span><span class="token3">{</span> echo <span class="token2">'hello'</span><span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> ``` ``` `D:\phpstudy_pro\WWW\www.demo1.com\index.php` ``` <pre class="calibre17">``` <span class="token1"><</span><span class="token1">?</span>php <span class="token4">ini_set</span><span class="token3">(</span><span class="token2">'display_errors'</span><span class="token3">,</span> <span class="token6">1</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">error_reporting</span><span class="token3">(</span>E_ALL<span class="token3">)</span><span class="token3">;</span> include <span class="token2">'vendor/autoload.php'</span><span class="token3">;</span> $a<span class="token1">=</span> <span class="token5">new</span> <span class="token4"><span class="token3">\</span>Dash<span class="token3">\</span>tools<span class="token3">\</span>church<span class="token3">\</span>TestClass1</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token4">var_dump</span><span class="token3">(</span>$a<span class="token3">)</span><span class="token3">;</span> ``` ```