Composer による PHP パッケージの管理方法

WBOY
リリース: 2016-06-20 13:01:39
オリジナル
954 人が閲覧しました

PHP パッケージ管理の観点から見ると、PHP の開発は非常に遅く、その結果、PEAR のようなツールを使用するプログラマーはほとんどいません。代わりに、ほとんどの開発者は、DB インタラクション、ORIM、Oauth、Amazon S3 統合など、コードを処理するための独自のお気に入りのフレームワークを選択します。欠点は、フレームワークを切り替える (またはフレームワークの使用に戻る) ことが悪夢のように感じられることです。新しいツールを使用するにはすべてを学び直す必要があり、それは簡単ではないからです。 Composer は、これらの問題の解決を支援します。
はじめに
Composer は、自らを「すべてのプロジェクトのグルー メーター」として位置づけることで問題の解決に乗り出しました。これは、他の開発者がアプリケーションに簡単にプラグインできる形式でパッケージを作成、開発、共有できることを意味します。

この記事では、Composer パッケージのインストール方法と使用方法について説明します。記事の最後では、コード ブロックを任意のフレームワークに挿入して体験することができます。CodeIgniter、FuelPHP、Laravel、Symfony2、Lithium、Yii、Zend などを使用できます。
インストール
Composer は 2 つの論理部分で構成されます。1 つはパッケージの保存に使用され、もう 1 つはコードの検出、ダウンロード、更新、共有を支援するコマンド ライン アプリケーションです。

$ cd/path/to/my/project  
$ curl -s http://getcomposer.org/installer| php 
ログイン後にコピー


プロジェクト リストには、すべての論理コード ライン ツールを含むcomposer.phar ファイルがあります。次のコードを実行すると、インストールが成功したかどうかを確認できます。

$ php composer.phar 
ログイン後にコピー


このコマンドを実行すると、使用可能なすべてのコマンドが表示されます。
個人的には、次のコマンドを使用することをお勧めします:

$ sudo mv composer.phar /usr/bin/composer 
ログイン後にコピー


このファイルを bin ディレクトリに移動すると、コマンドを簡素化できます。

$ composer about 
ログイン後にコピー


Windows で実行している場合は、このファイルをダウンロードし、PHP パーサー経由でどこにでもインストールできます。
コンポーザー.json ファイルを解析します
Ruby プログラマーであれば、このファイルは Gemfile ファイルに非常に似ていると感じるでしょう。また、Node プログラマーであれば、このファイルは package.json ファイルに非常に似ていると感じるでしょう。同様に、Composer は、composer.json ファイルを使用して、アプリケーションのニーズに基づいて設定とパッケージ化を指定します。
ほとんどの基本的な形式では、コンポーザー ファイルは次のようになります:

{  
    "require": {  
       "kriswallsmith/assetic": "*"  
    }  
} 
ログイン後にコピー


これは、「kriswallsmith」によって作成され、指定されたバージョンの「assetic」パッケージが必要であることを意味します。代わりに次のコマンドを使用して、特定のバージョンを指定することもできます:
"kriswallsmith/assetic": "1.0.3"
次のメソッドを使用することもできます:
"kriswallsmith/assetic": "1.0.*"
これには若干の変更が加えられていますが、1.1.0 にはアップグレードされません。プログラマーはインターフェイスの微妙な変更に注意する必要があります。
インストール要件
これで、composer.json ファイルの下に 1 つ以上のパッケージが存在し、この時点で実行できるようになります:
$ phpコンポーザー.pharインストール
あるいは、私のアドバイスに従えば、Unix マシン上で実行するだけです:
$コンポーザーインストール
ファイルがダウンロードされ、アプリケーションのルート ディレクトリの下のベンダー フォルダーに配置されることがわかります。このロジックでは、次の構成も使用できます:

{  
   "require": {  
       "kriswallsmith/assetic": "1.0.*"  
    },  
    "config" : {  
        "vendor-dir" : "packages"  
    }  
} 
ログイン後にコピー


オートロード
PHP ではオートローディングは少し面倒なので、開発者は独自の方法でオートローディングを行う必要があります。たとえば、Smarty パッケージは独自の自動読み込みを使用します。開発者によっては、複数のクラスを 1 つのファイルに入れたり、ファイル名を小文字にしたりすることがあります。このようなやり方はカジュアルすぎます。

公式 PHP コミュニティは、これらの恣意的な慣行を標準化するために PSR-0 標準を作成しました。 Composer はデフォルトでこの標準をサポートします。 Composer には PSR-0 自動読み込みメカニズムが付属しています。次のコード行をプロジェクトに追加します。 include_once './vendor/autoload.php'; 当然のことながら、autoload.php ファイルのディレクトリが変更された場合は、コードにも対応する変更を加える必要があります。
以下では、アプリケーションで次のコードを使用できます:

<?php   
use Assetic\Asset\AssetCollection;  
use Assetic\Asset\FileAsset;  
use Assetic\Asset\GlobAsset;  
$js = new AssetCollection(array(  
   new GlobAsset('/path/to/js/*'),  
    new FileAsset('/path/to/another.js'),  
));  
  
// the code is merged when the asset is dumped  
echo $js->dump();  
ログイン後にコピー
これは Assetic を使用した例です。もちろん、ここには多くの名前空間コードがありますが、これはパッケージ間の競合を避けるために行われます。

PSR-0 の命名規則の本質は次のとおりです:
                                                                                              次の例は Buzz HTTP パッケージです:

$browser = new Buzz\Browser;  
$response = $browser->get('http://www.google.com');  
echo $browser->getLastRequest()."\n";  
echo $response;  
ログイン後にコピー


看起来像是被美化的file_get_contents(),但是它处理所有类型的智能逻辑,并且在后台处理HTTP Response/Request,你也会发现命名空间语法也不是那么的强烈。
真实的世界
目前,大多数PHP存储依靠主代码库。如果你使用Facebook SDK,例如,你仅仅从GitHub或者zip文件中通过复制粘贴的方式把版本推到你的代码中,然后把它放到你的版本控制系统里面,将会变更。
版本和你的代码只是作为静态文件放在里面,在某种意义上,你可能会忘记升级,如果你关注到Facebook已经发布了一个新版本。最新版本文件会显示在最上面。
使用Composer就无需关注版本变化情况,你只需运行一下更新,那么所有需要更新的都会自动更新。但是为什么还会有大量的代码在你的仓库里呢?你不需要它们在那里吗?
最干脆的做法是添加vendors到你的“Ignore”列表里面(例如gitignore)并且让你的代码完全离开那里。当你在部署代码的时候,你只需运行composer install或者composer update。
如果你想使用更熟练,你可以手动运行整个过程,如果你有云端托管你可以设置hooks,一旦代码发布,就运行。
总结
将来,你将会看到更多的Composer,各种丰富多彩的框架已经开始提供了多种层次的集成。FuelPHP将构建Composer包,CodeIgniter提供自动加载并且已经在Symfony2上广泛使用。
使用Composer添加相关包到你的项目里面是一个很好的方式,无需安装PECLI扩展或者复制粘贴一个系列文件。那种方式已经很过时了,并且还浪费你大量的时间。


関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!