LoginSignup
3
0

More than 5 years have passed since last update.

composer経由でLimonadeを使ってみる

Posted at

そもそも Limonade って?

phpのマイクロWebアプリケーションフレームワークです。
すごく雑に説明すると、Pythonにおけるbottle.pyぐらいの立ち位置です。

phpのライブラリ管理はcomposerを使おうぜの風潮が自分に届くより前から存在し、
なおかつ開発自体はもうされていないみたいで、READMEでも最初の使い方が

<?php

require_once('lib/limonade.php');

// 略

と「napespace?なにそれ?」感のある、枯れきったフレームワークです。

composer経由で?

上記のGitHubリポジトリを見るとわかるのですが、composer.jsonが存在します(それも、2012年には)
しかも、ちゃんとPackagistにも登録されています

つまり、ざっくりとですがcomposerベースのwebアプリにも使えそうです。

やってみる

./composer.json
{
    "name": "attakei/limonade-demo",
    "type": "project",
    "authors": [
        {
            "name": "attakei",
            "email": "attakei@example.com"
        }
    ],
    "require": {
      "sofadesign/limonade": "dev-master"
    }
}
./index.php
<?php

require __DIR__.'/vendor/autoload.php';


dispatch('/', 'hello');
function hello()
{
    return 'Hello world!';
}

run();
2ファイル用意して
$ composer install
$ php -S 0.0.0.0:8080

どこかで見たPHPコードですね。

composer install で生成されるClassLoaderなどを眺めてみる

<?php

// autoload_files.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    '6766b12fe77434412be24043b58480fd' => $vendorDir . '/sofadesign/limonade/lib/limonade.php',
);

autoload_filesを眺めてみると、こんな感じになっていました。
このファイルのおかげで、オリジナルのドキュメントにあるのとほとんど変わらないコードで
limonade with composerができるようになります。

appendix

index.php以外にdispatchされる関数を定義するには

./index.php
<?php

require __DIR__.'/vendor/autoload.php';

// ここはどうする?

run();
./app/index.php

dispatch('/', 'hello');
function hello()
{
    return 'Hello world!';
}

こんなコードに分けたい場合。

./index.php
<?php

require __DIR__.'/vendor/autoload.php';

require_once './app/index.php';

run();

こうするしかなさそう

dispatchする関数がnamespaceに属している場合

./app/index.php

namespace App;

dispatch('/', '\App\hello');
function hello()
{
    return 'Hello world!';
}

dispatchに呼び出す関数を指定するときに、namespace込みのフルネームで指定してあげれば問題なく動きます。

dispatchに呼び出す関数を指定するときに、namespace込みのフルネームで指定してあげれば問題なく動きます。

3
0
0

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
3
0