LoginSignup
14
14

More than 5 years have passed since last update.

FuelPHP -- 1.5系でcomporserを導入する --

Posted at

FuelPHP1.6からはcomposerが導入されるらしいですがまだdev版なので1.5系でcomposerを使用する為の方法を記載していきます

環境

  • centos6.3
  • fuelPHP1.5.3

事前準備に必要なもの

参考にしたサイト

composerでいれるもの

ユニットテストを書くのでPHPUnit系のものを入れたいとおもいます。
今回入れるものは下記を入れます。

  • phpunit/phpunit
  • mockery/mockery
  • phpunit/dbunit
  • phpunit/phpunit-selenium
  • phpunit/phpunit-story
  • phing/phing
  • pdepend/pdepend
  • phpmd/phpmd
  • squizlabs/php_codesniffer
  • behat/behat
cd fuelPHPのカレントディレクトリ
vim composer.json
composer.json
{
    "require": {
        "phpunit/phpunit": "3.7.*",
        "mockery/mockery": "0.7.*",
        "phpunit/dbunit": ">=1.2",
        "phpunit/phpunit-selenium": ">=1.2",
        "phpunit/phpunit-story": "*",
        "phing/phing": "dev-master",
        "pdepend/pdepend": "dev-master",
        "phpmd/phpmd": "dev-master",
        "squizlabs/php_codesniffer": "dev-master",
        "behat/behat": "2.4.*@dev"
    },
    "config": {
        "bin-dir": "FuelPHPのカレントディレクトリのフルパス/fuel/app/vendor/bin",
        "vendor-dir": "FuelPHPのカレントディレクトリのフルパス/fuel/app/vendor"
    }
}

install

コマンド一発

cd fuelPHPのカレントディレクトリ
composer update

Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing mockery/mockery (0.7.2)
    Loading from cache

  - Installing symfony/yaml (v2.2.0)
    Loading from cache

  - Installing phpunit/php-text-template (1.1.4)
    Loading from cache
    .
    .
    .
    .

mockery/mockery suggests installing Hamcrest (1.0.0)
phpunit/phpunit suggests installing phpunit/php-invoker (>=1.1.0,<1.2.0)
symfony/event-dispatcher suggests installing symfony/http-kernel (2.2.*)
behat/behat suggests installing behat/symfony2-extension (for integration with Symfony2 web framework)
behat/behat suggests installing behat/yii-extension (for integration with Yii web framework)
behat/behat suggests installing behat/mink-extension (for integration with Mink testing framework)
Writing lock file
Generating autoload files

確認

fuel/app/vendor/以下に入れたいパッケージがあればOK

ll fuel/app/vendor/
合計 4
-rw-r--r-- 1 root root 182  3月 20 14:55 2013 autoload.php
drwxr-xr-x 1 root root 136  3月 20 14:54 2013 behat
drwxr-xr-x 1 root root 306  3月 20 14:55 2013 bin
drwxr-xr-x 1 root root 272  3月 20 14:55 2013 composer
drwxr-xr-x 1 root root 102  3月 20 14:53 2013 mockery
drwxr-xr-x 1 root root 102  3月 20 14:53 2013 pdepend
drwxr-xr-x 1 root root 102  3月 20 14:53 2013 phing
drwxr-xr-x 1 root root 102  3月 20 14:54 2013 phpmd
drwxr-xr-x 1 root root 408  3月 20 14:54 2013 phpunit
drwxr-xr-x 1 root root 102  3月 20 14:54 2013 squizlabs
drwxr-xr-x 1 root root 306  3月 20 14:54 2013 symfony

PHPUnitの設定をconfigでオーバーライドする

このままではFuelPHPのテストをかくことができません。なぜならばFuelPHPのPHPUnitはデフォルトでフルパスで指定しないでphpunitコマンドで実行しようとするからです。

/fuel/packages/oil/config/oil.php
return array(
    'phpunit' => array(     
        'autoload_path' => 'PHPUnit/Autoload.php' ,
        'binary_path' => 'phpunit' ,
    ),
);

このpackageの設定ファイルをfuel/app/configにコピーして設定を変更しましょう

cp fuel/packages/oil/config/oil.php fuel/app/config/
fuel/app/config/oil.php
#編集前
        'autoload_path' => 'PHPUnit/Autoload.php' ,
        'binary_path' => 'phpunit' ,
#編集後
        'autoload_path' => dirname(COREPATH).'/app/vendor/autoload.php' ,
        'binary_path' => dirname(COREPATH).'/app/vendor/bin/phpunit' ,

fuel oil testコマンドが動くか確認してみる

確認しましょう

php oil test
Tests Running...This may take a few moments.
PHPUnit 3.7.18 by Sebastian Bergmann.

Configuration read from /home/web/lo.fuel.base.org/fuel/core/phpunit.xml

...............................................................  63 / 330 ( 19%)
............................................................... 126 / 330 ( 38%)
............................................................... 189 / 330 ( 57%)
............................................................... 252 / 330 ( 76%)
............................................................... 315 / 330 ( 95%)
...............

Time: 4 seconds, Memory: 21.75Mb

OK (330 tests, 350 assertions)

動きましたがこれだとfuel本体のテストを毎回していてウザいですね

phpunit拡張用にphpunit.xmlもpacakageから持ってくる

普段の開発ではcoreとpackage(Fuelが提供しているもの)はテストの必要がないはずなので設定を変更しましょう。

cp fuel/core/phpunit.xml fuel/app/phpunit.xml
fuel/app/phpunit.xml
#修正前
        <testsuite name="core">
            <directory suffix=".php">../core/tests</directory>
        </testsuite>
#修正後
        <!--        <testsuite name="core">
            <directory suffix=".php">../core/tests</directory>
        </testsuite> -->

再度確認

もう一回確認してfuel/app/phpunit.xmlに設定が向いているか確認しましょう

php oil test

Tests Running...This may take a few moments.
PHPUnit 3.7.18 by Sebastian Bergmann.

Configuration read from /home/web/lo.fuel.base.org/fuel/app/phpunit.xml



Time: 0 seconds, Memory: 3.50Mb

No tests executed!

fuel/app/phpunit.xmlの設定が反映されましたね。

PHPUnit以外のcomposerも動作させるためには

上記はこれはあくまでPHPUnitの設定だけで他のcomporserのパッケージはこれでは動きませんので
bootstrap.phpにcomposerのautoload.phpをreqiureしてあげましょう。

fuel/app/bootstrap.php
// Register the autoloader
Autoloader::register();

#追加
// Composer
require APPPATH.'/vendor/autoload.php';

ポイントはUsing Composer with FuelPHP 1.xでも記載されている通りにAutoloader::register();の後にcomposerのautoload.phpをrequireすることみたいです。(理由までは調べてませんが)

これでvendorパッケージ管理が容易になるかと思います。

14
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14