composerでPHPTALを入れようとした件

PHPTALが大変便利なためcomposerでインストールしようとしたらちょっとハマりかけたのでまとめておきました。

Packagistを使う場合

PHTPALはPackagistに公開されています。なので設定ファイルは単純です。

composer.json
{
    "require": {
        "phptal/phptal": "dev-master"
    }
}

ただしPackagistにはバージョンが正しく認識されていないのかエラーになってしまうのでバージョンを指定できません。Packgistに認識されるようになればこれでバージョン指定ができるようになると思います。

バージョン固定で使う場合

解決策として今回の例ではgithub上から取得してくるタイプのパッケージとしてインストールしました。
これはgithubの方がソースのファイル構造が一定であり続ける可能性が高いだろうからです。
githubからアーカイブを取得、展開してautoloadに対応させてます。

composer.json
{
    "repositories": [
        { 
            "type": "package",
            "package": {
                "name": "phptal/phptal",
                "version": "1.2.2",
                "dist": {
                    "url": "https://github.com/pornel/PHPTAL/zipball/1.2.2",
                    "type": "zip"
                },
                "source": {
                    "url": "https://github.com/pornel/PHPTAL.git",
                    "type": "git",
                    "reference": "master"
                },
                "autoload": {
                    "psr-0": {"PHPTAL": "classes/"}
                }
            }
        }
    ], 
    "require": {
        "phptal/phptal": "1.2.*"
    }
}

requireには依存するバージョンを書いておくべきだと思いますので"1.2.*"にしています。
設定しているのは1.2.2のファイルだけなので結局1.2.2しかインストールできない状態です。バージョンとURLを変えれば他のバージョンでもとってこれます。
あと、PHPTALはPSR-0に対応しているみたいなので使いやすいautoloadで利用できました。