slim framework part.1

元記事

slim framework part.1

はじめに

今回から箸休め的に別のソースコードを読んでいこうと思います。
今後もこんな感じに気分によって、ぶらぶら読むコードを変えることがあると思いますが、 agを読むのを止めるわけではありません。

さて、なんでphpのマイナーフレームワークであるslimを読むかというと、 このサイトにslimを使っているからです。
それだけの理由です。

slimというとrubyのテンプレートエンジンでも同様の名前のものがありますが、そちらとは違います。

slim framework

以下を見ていただければ、slimの大体が分かると思います。
Slim Framework

最近、3系がつくられたみたいです。

しかし、ここでは2.6を読んでいきます。

ソースコード

上のリンクの"Download & Install"の項目を見るのが一番早いと思います。

composerで手に入れられます。zip(or tar.gz)で落とせます。githubからも落とせます。

一番楽な方法で。

Slim\Slim

使い方的なところを見てみれば分かると思いますが、こんな感じのソースが見られると思います。

<?php
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name";
});
$app->run();

なので、とりあえずSlim\Slimクラスを見ていくところをとっかかりにしましょう。

Slim\SlimクラスはSlim/Slim.phpに書いてあります。

__construct

コンストラクタを見ていきます。

public function __construct(array $userSettings = array())
{
    // Setup IoC container
    $this->container = new \Slim\Helper\Set();
    $this->container['settings'] = array_merge(static::getDefaultSettings(), $userSettings);
    /* ... */
}

まず最初にコメントにも書いてあるように、IoCコンテナを作成しています。
php別フレームワークのlaravelにもある感じのやつです。といっても分からない人には分からんですよね。 詳しい概念については私もわかりません。

ただ使用している立場から言わせてもらうと、フレームワーク内部(?)の挙動の変更とか、アプリのテストとかがやりやすくなるので、 便利だなと感じることがちょこちょこあります。

基本的に使用するユーティリティとかは、オブジェクト化してコンテナに突っ込んでいき、 そのオブジェクトを中継して処理をおこなっていくので、柔軟なコードになりテストとかしやすくなります。
その分、直接関数呼ぶとかよりオーバーヘッドが出るのですが、大抵無視できるレベルのものかと思います。

まあ先ほど書きました通り、感覚的なところは別として、しっかりした概念は私も理解していません。

なのでソースを読んでいきましょう。

おしまい

全く進んでいない感じですが、今日はここまで。
次はIoCコンテナである\Slim\Helper\Setについて。