検索
ホームページ開発ツールcomposerComposer パッケージの開発はそんなに簡単ですか?

次のコラムでは、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

Composer パッケージの開発はそんなに簡単ですか?

以上の方法でインストールが完了します。 。

次に、GitHub と Composer ツールを組み合わせて使用​​し、Composer パッケージを開発する方法の例を示します。

composer パッケージはどのように開発されていますか?

たとえば、数値を処理するためのコンポーザ パッケージを開発します。

GitHub でプロジェクトを作成する

  1. GitHub にログインし (アカウントをお持ちでない場合は作成してください)、「」をクリックします。右上隅の「」をクリックし、「新しいリポジトリ」を選択します。

  2. 作成インターフェイスで、リポジトリ名に「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 = &#39;TB&#39;;	
        }	
        elseif ($num >= 1000000000)	
        {	
            $num = round($num / 1073741824, $precision);	
            $unit = &#39;GB&#39;;	
        }	
        elseif ($num >= 1000000)	
        {	
            $num = round($num / 1048576, $precision);	
            $unit = &#39;MB&#39;;	
        }	
        elseif ($num >= 1000)	
        {	
            $num = round($num / 1024, $precision);	
            $unit = &#39;KB&#39;;	
        }	
        else	
        {	
            return number_format($num).&#39; Bytes&#39;;	
        }	
        return number_format($num, $precision).&#39; &#39;.$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 &#39;../vendor/autoload.php&#39;;	
use \numberFormat;	
$number = &#39;102400010&#39;;	
echo numberFormat\NumberFormat::byte_format($number);	
//输出:97.7 MB

至此,测试成功,接下来就是要发布到packagist平台,给广大开发者见面了。

发布到 packagist 平台

packagist.org 为 composer 安装包的平台(可用GitHub账号登录)。

  1. 现将本地代码提交到GitHub。

  2. 发布到 packagist 平台,登录后在首页的右上角有一个"Submit"按钮,点击即可进入开发包提交的界面。在“Repository URL (Git/Svn/Hg)”输入框中,输入GitHub项目的地址,点击“Check”按钮,稍微等待几秒钟,会显示验证成功,并显示出“Submit”按钮,点击即完成了开发包的提交了。

恭喜你,这个开发包可以在任何支持 composer 的PHP框架中使用了。

那么问题来了,刚才我们的包写的有的简陋,后期我们维护代码,新增代码还需要按照原来的方式操作一遍吗?

不!因为我们可以在GitHub平台设置代码更新,同时能让 packagist.org 自动更新,是不是很酷!

在GitHub中找到代码仓库,然后选择"settings" -> “Webhooks” ,默认是绑定自动更新的。

如果未绑定,可以这样设置:"settings" -> “Webhooks” -> "Add webhook" ->

  1. Payload URL填写:“https://packagist.org/api/github”

  2. Content type填写:“application/json”

  3. Secret填写:“packagist提供的token”

  4. 其他的默认即可

  5. 点击“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

小结

通过这篇文章,解决了上述提到的三个问题:

  1. composer 是用来干嘛的?

  2. composer 是如何安装的?

  3. composer 包是如何开发的?

看完后,是不是觉得 Composer 包开发原来这么简单,作为骄傲的程序员,去开发属于自己的 Composer 包吧!

以上がComposer パッケージの開発はそんなに簡単ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcsdnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
DICR/YII2-GOOGLEを使用して、Yii2にGoogle APIを統合しますDICR/YII2-GOOGLEを使用して、Yii2にGoogle APIを統合しますApr 18, 2025 am 11:54 AM

vProcesserazrabotkiveb-Enclosed、する、するまみ、するまで。 leavallysumballancefriablancefaumdoptomatification、čtokazalovnetakprosto、kakaožidal.posenesko

作曲家を使用してJSONスキーマの検証の問題を解決する方法作曲家を使用してJSONスキーマの検証の問題を解決する方法Apr 18, 2025 am 11:51 AM

Symfonyベースのアプリケーションを開発する際には、JSONデータ形式を効果的に検証する方法を開発する際に、トリッキーな問題を抱えています。最初は、手動検証コードを使用しようとしましたが、これは複雑であるだけでなく、エラーが発生しやすいものでもありました。いくつかの調査の後、私はPtyhard/Json-Schema-Bundleという作曲家パッケージを発見しました。

作曲家を使用して、推奨システムのジレンマを解決する:Andres-Montanez/推奨作曲家を使用して、推奨システムのジレンマを解決する:Andres-Montanez/推奨Apr 18, 2025 am 11:48 AM

eコマースのWebサイトを開発するとき、私は困難な問題に遭遇しました。ユーザーにパーソナライズされた製品の推奨事項を提供する方法です。当初、私はいくつかの簡単な推奨アルゴリズムを試しましたが、結果は理想的ではなく、ユーザーの満足度も影響を受けました。推奨システムの精度と効率を改善するために、より専門的なソリューションを採用することにしました。最後に、Andres-Montanez/Adcumentations Bundleを介してAndres-Montanez/Bundleをインストールしました。これは、問題を解決しただけでなく、推奨システムのパフォーマンスを大幅に改善しました。次の住所から作曲家を学ぶことができます。

Composerを使用してFecmall Advanced Projectテンプレートをすばやく構築する方法Composerを使用してFecmall Advanced Projectテンプレートをすばやく構築する方法Apr 18, 2025 am 11:45 AM

eコマースプラットフォームを開発する場合、適切なフレームワークとツールを選択することが重要です。最近、機能が豊富なeコマースのウェブサイトを構築しようとしていたとき、私は困難な問題に遭遇しました。スケーラブルで完全に機能的なeコマースプラットフォームをすばやく構築する方法です。複数のソリューションを試してみて、FecmallのAdvanced Projectテンプレート(Fecmall/FBBCBase-App-Advanced)を選択することになりました。 Composerを使用することにより、このプロセスは非常にシンプルで効率的になります。作曲家は次のアドレスを通して学ぶことができます:学習アドレス

ドクトリンエンティティのシリアル化効率を改善:Sidus/Doctrine-Serializer-Bundleの適用ドクトリンエンティティのシリアル化効率を改善:Sidus/Doctrine-Serializer-Bundleの適用Apr 18, 2025 am 11:42 AM

多数の教義エンティティを含むプロジェクトに取り組んでいるとき、私は厳しい問題を抱えていました。エンティティがシリアル化され、脱必要にされるたびに、パフォーマンスは非常に非効率的になり、システムの応答時間が大幅に増加します。複数の最適化方法を試しましたが、うまくいきません。幸いなことに、Sidus/Doctrine-Serializer-Bundleを使用することで、この問題をうまく解決し、プロジェクトのパフォーマンスを大幅に改善しました。

Composerを使用して、Laravelプロジェクトのエラーログの問題を解決しますComposerを使用して、Laravelプロジェクトのエラーログの問題を解決しますApr 18, 2025 am 11:39 AM

Laravelプロジェクトを開発する場合、エラーログの管理は非常に重要なリンクです。最近、私はプロジェクトで問題に遭遇しました。すべてのタイプのエラーを効率的にキャプチャして記録し、これらのエラーメッセージをタイムリーに処理できるようにする方法です。いくつかの調査の後、lukeboy25/errorloggerパッケージを見つけました。作曲家を通じてインストールされており、エラーログの管理プロセスを大幅に簡素化できます。次の住所から作曲家を学ぶことができます。

Composerを使用してLaravelアプリケーションのセキュリティを改善する方法:Wiebenieuwenhuis/Laravel-2FAライブラリのアプリケーションComposerを使用してLaravelアプリケーションのセキュリティを改善する方法:Wiebenieuwenhuis/Laravel-2FAライブラリのアプリケーションApr 18, 2025 am 11:36 AM

Laravelアプリケーションを開発するとき、私は一般的ではあるが難しい問題に遭遇しました。ユーザーアカウントのセキュリティを改善する方法です。サイバー攻撃の複雑さの増加により、単一のパスワード保護は、ユーザーのデータのセキュリティを確保するのに十分ではなくなりました。いくつかの方法を試しましたが、結果は満足のいくものではありませんでした。最後に、コンポーザーを介してwiebenieuwenhuis/laravel-2FAライブラリをインストールし、アプリケーションに2因子認証(2FA)を大幅に追加し、セキュリティを大幅に改善しました。

作曲家を使用して、モバイルデバイスの検出とファイルのダウンロードサイズの計算を簡素化します作曲家を使用して、モバイルデバイスの検出とファイルのダウンロードサイズの計算を簡素化しますApr 18, 2025 am 11:33 AM

ウェブサイトを開発するとき、私は一般的なが難しい問題に遭遇しました:ユーザーアクセスデバイスのタイプを正確に決定する方法と、ファイルのダウンロードサイズをすばやく取得する方法。これらの機能は簡単に思えるかもしれませんが、実装されたときに多くの詳細と互換性の問題に対処する必要があります。いくつかの調査の後、私はComposerパッケージWeizhang/Utilitiesを発見しました。これは、シンプルで効果的なソリューションを提供します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール