😀

composerを使ってみた時のメモ

2022/11/28に公開

pearの後継版のパッケージ管理の機能とかなんとかどっかに書いてあった。

使ってみた感想は便利!!

環境

  • centos6.3(ゲストOS)
  • macosx10.8(ホストOS)

事前準備に必要なもの

  • php5.3以上

参考にしたサイト

composerをインストールする

サクッとワンライナー

curl -s https://getcomposer.org/installer | php && mv -v composer.phar /usr/local/bin/composer

自分は/usr/local/binに置きました

動作確認

$composer -help


   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 98ada572ec52875dfa70e0cb9851dd5f8a34f006

Usage:
  [options] command [arguments]

Options:
  --help           -h Display this help message.
  --quiet          -q Do not output any message.
  --verbose        -v Increase verbosity of messages.
  --version        -V Display this application version.
  --ansi              Force ANSI output.
  --no-ansi           Disable ANSI output.
  --no-interaction -n Do not ask any interactive question.
  --profile           Display timing and memory usage information
  --working-dir    -d If specified, use the given directory as working directory.

Available commands:
  about            Short information about Composer
  config           Set config options
  create-project   Create new project from a package into given directory.
  depends          Shows which packages depend on the given package
  dump-autoload    Dumps the autoloader
  dumpautoload     Dumps the autoloader
  help             Displays help for a command
  init             Creates a basic composer.json file in current directory.
  install          Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
  list             Lists commands
  require          Adds required packages to your composer.json and installs them
  search           Search for packages
  self-update      Updates composer.phar to the latest version.
  selfupdate       Updates composer.phar to the latest version.
  show             Show information about packages
  status           Show a list of locally modified packages
  update           Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file.
  validate         Validates a composer.json

composerの設定ファイルを書く

ディレクトリ構成について

composerコマンドはcomposerコマンド実行時のカレントの設定ファイルを読みに行くのがデフォルトです。
設定ファイルもバージョン管理化に置きたいのでファイル構成はこんな感じで

├── composer.json
├── composer.lock
├── phpunit.bootstrap.php
├── phpunit.xml.dist
├── tests #テスト本体
│   └── ExampleTest.php
├── vendor #composerのインストールしたパッケージの置き場
└── www #ドキュメントルート
    ├── index.html
    └── phpinfo.php

設定ファイルを新規で追加

phpunit本家からcomposerを対応しているモジュール郡をグバっと入れてます。

composer.json
{
    "require": {
        "phpunit/phpunit": "3.7.*",
        "mockery/mockery": "0.7.*",
        "phpunit/dbunit": ">=1.2",
        "phpunit/phpunit-selenium": ">=1.2",
        "phpunit/phpunit-story": "*"
    },
    "config": {
        "bin-dir": "/usr/local/bin/"
    }
}

composer install

シンプル

composer install

phpunitの設定を書く

ComposerでPHPUnit一式+Mockeryをインストールを真似ました。

phpunit.xml.dist

phpunit.xml.dist
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
    bootstrap="phpunit.bootstrap.php"
    processIsolation="false"
    verbose="true"
    strict="false"
    colors="true">
    <testsuites>
        <testsuite name="PHPUnit">
            <!-- テストケースがあるディレクトリを列挙する -->
            <directory>tests</directory>
            <!-- <directory>MyProject2</directory> -->
            <!-- <directory>MyProject3</directory> -->
            <!-- <directory>MyProject4</directory> -->
        </testsuite>
    </testsuites>

    <logging>
        <!-- コードカバレッジ率 -->
        <log
            type="coverage-html"
            target="metrics/coverage"
            charset="UTF-8"
            yui="true"
            highlight="false"
            lowUpperBound="35"
            highLowerBound="70" />
        <!-- <log type="coverage-text" target="php://stdout" lowUpperBound="35" highLowerBound="70" /> -->
        <!-- 上行をアンコメントアウトするとカバレッジ率がプロンプトにも表示される -->
    </logging>

    <filter>
        <!-- コードカバレッジ率を計測する対象の指定 -->
        <whitelist>
            <directory suffix=".php">src</directory>
            <!-- <file>/path/to/file</file> -->
            <exclude>
                <file>public/index.php</file>
            </exclude>
        </whitelist>
        <!-- コードカバレッジ測定対象から除外 -->
        <blacklist>
            <directory suffix=".php" group="PHPUNIT">vendor</directory>
        </blacklist>
    </filter>
    <listeners>
        <!-- mockery統合のため必要 -->
        <listener class="\Mockery\Adapter\Phpunit\TestListener" file="Vendor/mockery/mockery/library/Mockery/Adapter/Phpunit/TestListener.php" />
    </listeners>
</phpunit>

phpunit.bootstrap.php

phpunit.bootstrap.php
<?php

// For composer
require_once 'vendor/autoload.php';

tests/ExampleTest.php

tests/ExampleTest.php
<?php

class ExampleTest extends PHPUnit_Framework_TestCase
{
        public function testSomething()
        {
                $this->assertTrue(true);
        }
}

phpunit実行

実行

$phpunit


PHPUnit 3.7.14 by Sebastian Bergmann.

Configuration read from /home/web/lo.test.org/phpunit.xml.dist

.

Time: 9 seconds, Memory: 5.25Mb

OK (1 test, 1 assertion)

以上。

Discussion