次のコラムでは、composer チュートリアルコラムで Composer 生成環境について紹介します。必要としている友人の役に立てば幸いです。
作曲家についてよく知らない学生は、必ずこの質問を抱くでしょう。
という単語はオンライン、特に GitHub でLaravel
、Yii
を使用するときによく見られます。 word. インストール中に Composer を使用することをお勧めしますか?インストール時にのみ使用されますか?他のフレームワークも使用していますが、Thinkphp
とCodeigniter
を Composer と一緒にインストールしないのはなぜですか?
これらの疑問をもとに、私たちは勉強します。
composer 公式 Web サイト: https://www.phpcomposer.com
composer は、PHP (5.3) で依存関係を管理するために使用されるツールです。
長い間、PHP のオープンソース アプローチはプロジェクト レベルで行われてきました。つまり、オープンソースになると、CMS の完全なセット (Dede、WordPress、discuz) などのプロジェクトになります。 、およびフレームワークの完全なセット (Thinkphp、Codeigniter)。なぜ?非常に重要な理由の 1 つは、分解することが難しいということであり、分解すると、それを組み合わせる有効な管理ツールがなくなり、分解された小さなモジュールに誰も注目しなくなります。
その後、composer が登場しました。これは効果的な管理ツールです。全員が分解した小さなモジュールを管理し、それらを効果的に統合して完全なプロジェクトにする役割を果たします。
たとえば、ロギングには monolog/monolog を使用し、HTTP クライアントには guzzlehttp/guzzle を使用します。
Composer パッケージ プラットフォーム: https://packagist.org には、多数の優れたインストール パッケージが含まれており、composer コマンドを 1 つ行うだけで、プロジェクトに優れたコードを簡単に使用できます。
誇り高い PHPer として、私たちは常に他の人の開発パッケージを使用するだけではなく、他の人が使用できるように、また自分自身のためにパッケージを開発する必要があります。
これには非常に多くの利点があることがわかったので、コンポーザーのインストールから始めて、それについて学びましょう。
公式紹介ドキュメント: https://docs.phpcomposer.com/00-intro.html
以上の方法でインストールが完了します。 。
次に、GitHub と Composer ツールを組み合わせて使用し、Composer パッケージを開発する方法の例を示します。
たとえば、数値を処理するためのコンポーザ パッケージを開発します。
GitHub にログインし (アカウントをお持ちでない場合は作成してください)、「」をクリックします。右上隅の「」をクリックし、「新しいリポジトリ」を選択します。
作成インターフェイスで、リポジトリ名に「numberFormat」を入力します。説明はオプションです。ここでは空白のままにしておきます。パブリック (GitHub が推奨する方法、無料、誰でもアクセス可能) とプライベート (有料、指定されたユーザーのみがアクセス可能、2019 年 1 月 9 日以降は個人の開発者は無料) の場合は、「パブリック」を選択し、「このリポジトリを次で初期化する」にチェックを入れます。 README」が表示されたら、「リポジトリの作成」ボタンをクリックして正常に作成します。
#この時点で、「numberFormat」という名前の空のプロジェクトが GitHub 上に作成されたことになります。
次に、コーディングのためにリモート プロジェクトをローカル (Git コマンド ライン、Git クライアント) に複製する必要があります。
composer.json にはどのようなパラメータがあり、その記述方法は何ですか?次のドキュメントを参照してください: https://docs.phpcomposer.com/04-schema .html#composer.json
プロジェクトで開発パッケージを呼び出したい場合は、composer.json を通じてファイルをロードする方法を知ることができます。
composer.json 可以使用两个方式创建,一种是composer init
,另一种是手工创建。
咱们一起先执行下composer init
看看效果。
在本地创建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 (/ ) [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目录下,通过composer install
安装
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目录多一个vendor
目录。
在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 中国語 Web サイトの他の関連記事を参照してください。