다음 칼럼에서는 Composer 튜토리얼 칼럼에서 Composer 생성 환경을 소개하겠습니다. 필요한 친구들에게 도움이 되길 바랍니다!
작곡가를 모르는 학생들이라면 이런 질문이 꼭 있을 거예요.
이 단어는 온라인, 특히 GitHub에서 자주 볼 수 있습니다. 작곡가 설치 없이 <span class="typ" style="font-size:14px;">Laravel</span>
、 <span class="typ" style="font-size:14px;">Yii</span>
时也经常看到这个词,在安装的时候推荐使用 composer 安装?难道只是安装的时候使用吗?我也使用过其他框架,为什么 <span class="typ" style="font-size:14px;">Thinkphp</span>
、 <span class="typ" style="font-size:14px;">Codeigniter</span>
를 사용하는 것은 어떻습니까?
이 질문을 가지고 공부합시다.
composer 공식 웹사이트: https://www.phpcomposer.com
composer는 PHP(5.3+)에서 종속성을 관리하는 데 사용되는 도구입니다.
오랫동안 PHP의 오픈소스 방식은 프로젝트 수준이었습니다. 즉, 일단 오픈소스이면 CMS 전체 세트(Dede, WordPress, discuz), 전체 세트와 같은 프로젝트라는 의미입니다. 프레임워크(Thinkphp, Codeigniter). 왜? 가장 중요한 이유 중 하나는 분해가 어렵다는 점입니다. 분해하면 결합할 수 있는 효과적인 관리 도구가 없어 분해된 소형 모듈에 대해 아무도 신경 쓰지 않는다는 것입니다.
그러다가 등장한 것은 모두가 분해한 작은 모듈을 관리하고 이를 하나의 완전한 프로젝트로 효과적으로 통합하는 역할을 하는 효과적인 관리 도구입니다.
예를 들어 로깅에는 monolog/monolog를 사용하고, HTTP 클라이언트에는 guzzlehttp/guzzle을 사용하세요.
Composer 패키지 플랫폼: https://packagist.org, 다수의 우수한 설치 패키지가 포함되어 있습니다. 단 하나의 Composer 명령으로 우수한 코드를 프로젝트에 쉽게 사용할 수 있습니다.
자랑스러운 PHPer로서 우리는 항상 다른 사람의 개발 패키지를 사용할 수는 없으며 다른 사람이 사용할 수 있고 우리 자신을 위해 패키지를 직접 개발해야 합니다.
이제 이렇게 많은 장점이 있다는 것을 알았으니, 작곡가 설치부터 시작해 보겠습니다.
공식 소개 문서: https://docs.phpcomposer.com/00-intro.html
위 방법을 통해 설치가 완료됩니다.
다음으로 Composer 도구와 결합된 GitHub를 사용하여 Composer 패키지를 개발하는 방법에 대한 예를 제공합니다.
예를 들어, 숫자 처리를 위한 작곡가 패키지를 개발하세요.
GitHub에 로그인하고(계정이 없으면 계정을 만드세요) 오른쪽 상단에 있는 "+"를 클릭하고 "새 저장소"를 선택하세요.
생성 인터페이스에서 리포지토리 이름에 "numberFormat"을 입력하고 설명은 선택 사항이므로 지금은 비워둔 다음 공개(GitHub에서 권장, 무료, 모든 사람이 액세스 가능) 및 비공개( 유료, 지정된 사람만 액세스 가능, 개별 개발자는 무료(2019-01-09 이후), "Public"을 선택한 다음 "Initialize this repository with a README"를 체크하고 "Create Repository" 버튼을 클릭하면 생성이 성공합니다.
이 시점에서는 GitHub에 "numberFormat"이라는 빈 프로젝트가 생성되었음을 의미합니다.
다음으로 코딩을 위해 원격 프로젝트를 로컬(Git 명령줄, Git 클라이언트)에 복제해야 합니다.
composer.json 매개변수는 무엇이며 어떻게 작성하나요? 문서를 참고하세요: https://docs.phpcomposer.com/04-schema.html#composer.json
프로젝트는 개발 패키지를 호출해야 하며, 작곡가.json을 통해 파일을 로드하는 방법을 알 수 있습니다.
composer.json 可以使用两个方式创建,一种是 <span class="pln" style="font-size:14px;">composer init</span>
,另一种是手工创建。
咱们一起先执行下 <span class="pln" style="font-size:14px;">composer init</span>
看看效果。
在本地创建numberFormat目录,然后 git clone 刚才创建的项目。
//进入到本地numberFormat目录 composer init Welcome to the Composer config generator This command will guide you through creating your composer.json config. Package name (<vendor>/<name>) [root/number-format]:number-format/number-format Description []:一个处理数字的包 Author [XinLiang <109760455@qq.com>, n to skip]: //回车 Minimum Stability []: //回车 Package Type (e.g. library, project, metapackage, composer-plugin) []: //回车 License []: //回车 Define your dependencies. Would you like to define your dependencies (require) interactively [yes]?no Would you like to define your dev dependencies (require-dev) interactively [yes]?no { "name": "number-format/number-format", "description": "一个处理数字的包", "authors": [ { "name": "XinLiang", "email": "109760455@qq.com" } ], "require": {} } Do you confirm generation [yes]? //回车
至此,本地numberFormat目录就看到 composer.json 文件了,当然可以直接在目录下按照这个格式进行手工创建,后期直接编辑该文件即可。
开发包结构如下:
--src 源码目录(必须)
--tests 单元测试目录(非必须)
我们按照既定的目录结构去创建目录和文件,然后再到composer.json里面修改一下即可。
接下来,在src目录中创建一个类(NumberFormat.php):
/** * 数字格式化类 * @author XinLiang */ namespace numberFormat; class NumberFormat { /** * 格式化字节 * @param int $num 数字 * @param int $precision 精准度 * @return string */ public static function byte_format($num = 0, $precision = 1) { if ($num >= 1000000000000) { $num = round($num / 1099511627776, $precision); $unit = 'TB'; } elseif ($num >= 1000000000) { $num = round($num / 1073741824, $precision); $unit = 'GB'; } elseif ($num >= 1000000) { $num = round($num / 1048576, $precision); $unit = 'MB'; } elseif ($num >= 1000) { $num = round($num / 1024, $precision); $unit = 'KB'; } else { return number_format($num).' Bytes'; } return number_format($num, $precision).' '.$unit; } }
修改 composer.json
{ "name": "number-format/number-format", "description": "一个处理数字的包", "authors": [ { "name": "XinLiang", "email": "109760455@qq.com" } ], "minimum-stability": "dev", "require": { "php": ">=5.3.0" }, "autoload": { "psr-4": { "numberFormat\\": "src/" } }, "license": "MIT" }
至此,我们的开发包已经完成,接下来我们来测试下这个包是否可用。
在本地numberFormat目录下,通过 <span class="pln" style="font-size:14px;">composer install</span>
安装
composer install Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Writing lock file Generating autoload files //表示安装成功
惊奇的发现,在本地numberFormat目录多一个 <span class="pln" style="font-size:14px;">vendor</span>
目录。
在tests目录创建 NumberFormatTest.php
/** * 数字格式化测试类 * @author XinLiang */ require '../vendor/autoload.php'; use \numberFormat; $number = '102400010'; echo numberFormat\NumberFormat::byte_format($number); //输出:97.7 MB
至此,测试成功,接下来就是要发布到packagist平台,给广大开发者见面了。
packagist.org 为 composer 安装包的平台(可用GitHub账号登录)。
现将本地代码提交到GitHub。
发布到 packagist 平台,登录后在首页的右上角有一个"Submit"按钮,点击即可进入开发包提交的界面。在“Repository URL (Git/Svn/Hg)”输入框中,输入GitHub项目的地址,点击“Check”按钮,稍微等待几秒钟,会显示验证成功,并显示出“Submit”按钮,点击即完成了开发包的提交了。
恭喜你,这个开发包可以在任何支持 composer 的PHP框架中使用了。
那么问题来了,刚才我们的包写的有的简陋,后期我们维护代码,新增代码还需要按照原来的方式操作一遍吗?
不!因为我们可以在GitHub平台设置代码更新,同时能让 packagist.org 自动更新,是不是很酷!
在GitHub中找到代码仓库,然后选择"settings" -> “Webhooks” ,默认是绑定自动更新的。
如果未绑定,可以这样设置:"settings" -> “Webhooks” -> "Add webhook" ->
Payload URL填写:“https://packagist.org/api/github”
Content type填写:“application/json”
Secret填写:“packagist提供的token”
其他的默认即可
点击“Add webhook” 完成。
至此,后期我们更新代码后会自动同步到 packagist.org 上。
//其他开发者可以这样获取包 composer require number-format/number-format:dev-master
为什么会有:dev-master,为什么引用其他的包不用这样设置?
因为我们引用的其他包都是稳定包,默认为:-stable。
是因为我们 composer.json 中设置了 minimum-stability 属性,这个可以了解下“版本约束”,在这就不多说了。
当我们在发布包后,如果获取不到报错怎么办,有可能是镜像的问题。
//查看全局设置 composer config -gl //第一种:设置国内镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.com //第二种:设置国内镜像 composer config -g repo.packagist composer https://packagist.laravel-china.org //第三种:设置国内镜像 composer config -g repos.packagist composer //m.sbmmt.compkg.org
通过这篇文章,解决了上述提到的三个问题:
composer 是用来干嘛的?
composer 是如何安装的?
composer 包是如何开发的?
看完后,是不是觉得 Composer 包开发原来这么简单,作为骄傲的程序员,去开发属于自己的 Composer 包吧!
위 내용은 Composer 패키지 개발이 그렇게 쉬운가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!