Composer パッケージの開発はそんなに簡単ですか?
次のコラムでは、composer チュートリアル コラムで Composer 生成環境について紹介します。必要としている友人の役に立てば幸いです。
#composer は何に使用されますか?
作曲家についてよく知らない学生は、必ずこの質問を抱くでしょう。
という単語はオンライン、特に GitHub で <span class="typ" style="font-size:14px;">Laravel</span>
、<span class="typ" style="font-size:14px;">Yii</span>
を使用するときによく見られます。 word. インストール中に Composer を使用することをお勧めしますか?インストール時にのみ使用されますか?他のフレームワークも使用していますが、<span class="typ" style="font-size:14px;">Thinkphp</span>
と <span class="typ" style="font-size:14px;">Codeigniter</span>
を 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 として、私たちは常に他の人の開発パッケージを使用するだけではなく、他の人が使用できるように、また自分自身のためにパッケージを開発する必要があります。
これには非常に多くの利点があることがわかったので、コンポーザーのインストールから始めて、それについて学びましょう。
composer はどのようにインストールされますか?
公式紹介ドキュメント: https://docs.phpcomposer.com/00-intro.html
以上の方法でインストールが完了します。 。
次に、GitHub と Composer ツールを組み合わせて使用し、Composer パッケージを開発する方法の例を示します。
composer パッケージはどのように開発されていますか?
たとえば、数値を処理するためのコンポーザ パッケージを開発します。
GitHub でプロジェクトを作成する
GitHub にログインし (アカウントをお持ちでない場合は作成してください)、「」をクリックします。右上隅の「」をクリックし、「新しいリポジトリ」を選択します。
作成インターフェイスで、リポジトリ名に「numberFormat」を入力します。説明はオプションです。ここでは空白のままにしておきます。パブリック (GitHub が推奨する方法、無料、誰でもアクセス可能) とプライベート (有料、指定されたユーザーのみがアクセス可能、2019 年 1 月 9 日以降は個人の開発者は無料) の場合は、「パブリック」を選択し、「このリポジトリを次で初期化する」にチェックを入れます。 README」が表示されたら、「リポジトリの作成」ボタンをクリックして正常に作成します。
#この時点で、「numberFormat」という名前の空のプロジェクトが GitHub 上に作成されたことになります。
次に、コーディングのためにリモート プロジェクトをローカル (Git コマンド ライン、Git クライアント) に複製する必要があります。
composer.json の作成方法を学ぶ
composer.json にはどのようなパラメータがあり、その記述方法は何ですか?次のドキュメントを参照してください: https://docs.phpcomposer.com/04-schema .html#composer.json
プロジェクトで開発パッケージを呼び出したい場合は、composer.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 平台
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 设置镜像地址
//查看全局设置 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 https://php.cnpkg.org
小结
通过这篇文章,解决了上述提到的三个问题:
composer 是用来干嘛的?
composer 是如何安装的?
composer 包是如何开发的?
看完后,是不是觉得 Composer 包开发原来这么简单,作为骄傲的程序员,去开发属于自己的 Composer 包吧!
以上がComposer パッケージの開発はそんなに簡単ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Composer は、次のような高度な機能を提供します。 1. エイリアス: 繰り返し参照するためのパッケージの便利な名前を定義します。 2. スクリプト: データベース テーブルの作成またはリソースのコンパイルに使用される、パッケージのインストール/更新時にカスタム コマンドを実行します。 、満足度制約、およびパッケージ エイリアスは、同じ依存関係バージョンに対する複数のパッケージの異なる要件を解決して、インストールの競合を回避します。

回答: PHP マイクロサービスは、アジャイル開発のために HelmCharts でデプロイされ、分離とスケーラビリティのために DockerContainer でコンテナ化されます。詳細説明: HelmCharts を使用して PHP マイクロサービスを自動的にデプロイし、アジャイル開発を実現します。 Docker イメージを使用すると、マイクロサービスの迅速な反復とバージョン管理が可能になります。 DockerContainer 標準はマイクロサービスを分離し、Kubernetes がコンテナの可用性とスケーラビリティを管理します。 Prometheus と Grafana を使用して、マイクロサービスのパフォーマンスと健全性を監視し、アラームと自動修復メカニズムを作成します。

PHP 配列をオブジェクトに変換する方法: stdClass クラスを使用する、json_decode() 関数を使用する、サードパーティ ライブラリ (ArrayObject クラス、Hydrator ライブラリなど) を使用する

PHP コードのバージョン管理: PHP 開発では一般的に 2 つのバージョン管理システム (VCS) が使用されます。 Git: 分散 VCS。開発者はコード ベースのコピーをローカルに保存し、共同作業やオフライン作業を容易にします。 Subversion: 集中型 VCS。コード ベースの唯一のコピーが中央サーバーに保存され、より詳細な制御が可能になります。 VCS は、チームが変更を追跡し、共同作業し、以前のバージョンにロールバックするのに役立ちます。

PHPCI/CD は、ビルド、テスト、デプロイメントのプロセスを自動化し、開発効率とソフトウェアの品質を向上させる DevOps プロジェクトの重要なプラクティスです。一般的な PHPCI/CD パイプラインは次の段階で構成されます。 1) 継続的インテグレーション: コードが変更されるたびに、コードは自動的に構築され、テストされます。 2) 継続的デプロイ: テストおよび統合されたコードを実稼働環境に自動的にデプロイすることで、配信をスピードアップします。 PHPCI/CD パイプラインを実装すると、開発効率が向上し、ソフトウェアの品質が向上し、市場投入までの時間が短縮され、信頼性が向上します。

PHP でデータ構造を視覚化するための主なテクノロジは 3 つあります。 Graphviz: チャート、有向非巡回グラフ、デシジョン ツリーなどのグラフィカル表現を作成できるオープン ソース ツールです。 D3.js: インタラクティブなデータ駆動型の視覚化を作成し、PHP から HTML とデータを生成し、D3.js を使用してクライアント側で視覚化するための JavaScript ライブラリです。 ASCIIFlow: プロセスとアルゴリズムの視覚化に適した、データ フロー図のテキスト表現を作成するためのライブラリ。

回答: PHPCI/CD を使用して、CI/CD パイプラインの設定、自動化されたテストおよび展開プロセスなどの迅速な反復を実現します。 CI/CD パイプラインのセットアップ: CI/CD ツールを選択し、コード リポジトリを構成し、ビルド パイプラインを定義します。自動テスト: 単体テストと統合テストを作成し、テスト フレームワークを使用してテストを簡素化します。実際のケース: TravisCI の使用: TravisCI をインストールし、パイプラインを定義し、パイプラインを有効にして、結果を表示します。継続的デリバリーを実装します。展開ツールを選択し、展開パイプラインを定義し、展開を自動化します。利点: 開発効率が向上し、エラーが減少し、納期が短縮されます。

Redis キャッシュを使用すると、PHP 配列ページングのパフォーマンスを大幅に最適化できます。これは、次の手順で実現できます。 Redis クライアントをインストールします。 Redisサーバーに接続します。キャッシュ データを作成し、データの各ページをキー「page:{page_number}」を持つ Redis ハッシュに保存します。キャッシュからデータを取得し、大規模な配列での高コストの操作を回避します。
