次世代マイクロフレームワーク

    Silex
サクっと高速Webアプリ開発


          PHPカンファレンス関西 2012
            日本Symfonyユーザー会
@brtriver
Symfonyユーザー会




               Silex
Silex
Silex
Silex
Silexの説明の前に...




                 Silex
PHP界には
多種多様のフレームワーク
  が存在している現実




               Silex
CakePHP
   Symfony
  CodeIgniter
Zend Framework
     Ethna
    FuelPHP
       Yii
     Pinoco
     BEAR
      Silex
       ....
                 Silex
失敗しない
フレームワーク選び




            Silex
なぜフレームワークを使って
 開発をするのですか?




                Silex
フレームワークを使うと便利?

 •開発コストを抑えることができる
 •メンテンナンスが行い易い
 •セキュアなアプリ開発ができる
 •大人数で作業分担が行える




                    Silex
•開発コストを抑えることができる
 •学習コストがあるため初期工数は増える

•メンテンナンスが行い易い
 •フレームワークの思想にあった拡張しないとメンテナ
ンス性DOWN

•セキュアなアプリ開発ができる
 •間違った使い方で脆弱性を発生させる可能性

•大人数で作業分担が行える
 •gitなどのバージョン管理のほうが大事
                         Silex
どのフレームワークを使って
開発をするのが良いですか?




                Silex
「どのフレームワークが覚えやすいですか?」
「どのフレームワークが一番速いですか?」




                        Silex
「どのフレームワークが覚えやすいですか?」
「どのフレームワークが一番速いですか?」




  最適なフレームワーク


                        Silex
失敗しないフレームワーク選び


・何を開発したいのか?
・いつまでに開発したいのか?
・どのぐらいの規模のアプリなのか?
・開発者のレベルはどれぐらいか?


                 Silex
失敗しないフレームワーク選び


万人に適合するフレームワークは
存在しないから
 ぼくのかんがえた さいきょう のふ
れーむわーく が乱立している




                 Silex
失敗しないフレームワーク選び



フレームワークを使わないというのも
選択肢の1つです。




                 Silex
Silex が さいきょう なパターン
                  Silex
・PHPでsinatra風な書き方
・プロトタイプ開発
・ルーティング機能さえあれば良い
・モデルや設計はオレにやらせろ
・Symfony2も知りたい



                Silex
<?php
1 require_once __DIR__ . /silex.phar ;


2 $app = new SilexApplication();

3
    $app->get( /hello/{name} , function ($name)
     use ($app) {
          return こんにちは . $app->escape($name);
    });

4
    $app->run();
たったの9行
でWebアプリが書ける



              Silex
特徴: その1




  Silex を理解すればするほど
  Symfony2 も理解できる




                 Silex
Symfony2 Component base




    Symfony Components

           PHP


                         Silex
HONDA ビート (軽自動車)




NSXと同様に          ミッドシップエンジン・リアドライブが取り入れら


れ、ほぼ同時期の開発・発売とあって、その相似がとりあげられることもある。実際には開発


チームは別々で双方の人的交流もなかったが、ルームミラーは開発陣が意図して       NSX
と全く同じもの             を装備していた。 (wikipedia)
特徴: その2




  方向性がはっきりしている
Silex Philosophy


 • CLI のツール
 • 外部の設定ファイルを必須とするような機能
 • PHPっぽくない機能
 • Silex に多くのコードを追加して実装するような機能




https://github.com/fabpot/Silex/wiki/Silex-Philosophy
Silex Philosophy


 • CLI のツール
 • 外部の設定ファイルを必須とするような機能
 • PHPっぽくない機能
 • Silex に多くのコードを追加して実装するような機能




https://github.com/fabpot/Silex/wiki/Silex-Philosophy
Silex Philosophy


 • CLI のツール
 • 外部の設定ファイルを必須とするような機能
 • PHPっぽくない機能
 • Silex に多くのコードを追加して実装するような機能




https://github.com/fabpot/Silex/wiki/Silex-Philosophy
Silex Philosophy


 • CLI のツール
 • 外部の設定ファイルを必須とするような機能
 • PHPっぽくない機能
 • Silex に多くのコードを追加して実装するような機能




https://github.com/fabpot/Silex/wiki/Silex-Philosophy
Silex Philosophy


 • CLI のツール
 • 外部の設定ファイルを必須とするような機能
 • PHPっぽくない機能
 • Silex に多くのコードを追加して実装するような機能




https://github.com/fabpot/Silex/wiki/Silex-Philosophy
特徴: その3



          PHP 5.3
             を
           フル活用


                    Silex
PHP 5.3
    を
理解する必要がある


            Silex
PHP 5.3
 PHAR ( PHP 5.2.0以降)
   名前空間
無名関数(クロージャー)


                       Silex
特徴: その4



          DIコンテナ
$app = new SilexApplication();




                              Silex
パラメータとして設定
$app['name'] = アムロ・レイ ;
$app[ some_service] = $app->share(
 ....(何かの処理)...
);




                                     Silex
PHAR
    名前空間
無名関数(クロージャー)
   DIコンテナ

  これらを駆使して...

                Silex
たったの9行
でWebアプリが書ける



              Silex
<?php
1 require_once __DIR__ . /silex.phar ;


2 $app = new SilexApplication();

3
    $app->get( /hello/{name} , function ($name)
     use ($app) {
          return こんにちは . $app->escape($name);
    });

4
    $app->run();
ルーティング毎に
  処理を実装

           Silex
GET メソッド
$app->get( /hello/{name} , function ($name) {
      return Hello . $name;
});

POST メソッド
$app->post( /hello , function () use ($app) {
      $name = $app[ request ]->get( name );
      return Hello . $name;
});



                                                Silex
特徴: その5




      プロバイダー
      (Provider)


                   Silex
追加機能を
プロバイダーで
  拡張可能

          Silex
プロバイダーを使うために...


$app = new SilexApplication();


$app->register(new AcmeHogeProvider());




                                           Silex
プロバイダーを使うために...


$app = new SilexApplication();


$app->register(new AcmeHogeProvider());


            registerメソッドで登録



                                           Silex
標準のプロバイダー
  •DoctrineServiceProvider
  •MonologServiceProvider
  •SessionServiceProvider
  •TwigServiceProvider
  •TranslationServiceProvider
  •UrlGeneratorServiceProvider
  •ValidatorServiceProvider
  •HttpCacheServiceProvider

サードパーティのプロバイダー
  https://github.com/fabpot/Silex/wiki/Third-Party-ServiceProviders
Twigプロバイダー
   を使うと...


         Silex
$app[ twig ] に
Twigのインスタンスが
  セットされている
特徴: その6




   使いやすい
 日本語ドキュメント


          Silex
http://silex-users-jp.phper.jp/
                                  Silex
とにかく導入の敷居は低いので触ってみてください
       Let s try Silex
ご清聴ありがとうございました
すべてのSilex機能を
     標準で用意したバージョン


     Silex Kitchen Edition

https://github.com/lyrixx/Silex-Kitchen-Edition




                                                  Silex

PHPカンファレンス関西2012 Silex