39
Applicationとは 何か(哲学) しとりー@ndxbn

Applicationとは何か(哲学)(PHPBLT #6)

Embed Size (px)

Citation preview

Page 1: Applicationとは何か(哲学)(PHPBLT #6)

Applicationとは何か(哲学)

しとりー@ndxbn

Page 2: Applicationとは何か(哲学)(PHPBLT #6)

しとりー@ndxbnWeb系フリーランス

いまは東銀座の歌舞伎座らへんにいます

PHP歴6年くらい

最近は JavaScript が多い(悲しみ)

@ndxbn

Page 3: Applicationとは何か(哲学)(PHPBLT #6)

ことの発端

とあるレガシーなオレオレフレームワークにて…

※このコードは、フィクションです。

Page 4: Applicationとは何か(哲学)(PHPBLT #6)

● DB使わないアプリだってあるだろ!!!!

● メンテしないアプリだってあるだろ!!!!

● じゃあコンストラクタで受け取ってるこいつらなんだよ!!!???

Page 5: Applicationとは何か(哲学)(PHPBLT #6)

そして…俺の中で、アプリケーションの定義がゲシュタルト崩壊した

そりゃぁ、哲学したくなりますよね!!!

Page 6: Applicationとは何か(哲学)(PHPBLT #6)

ということで、

「アプリケーションとは何か」を哲学(笑)しました。

Page 7: Applicationとは何か(哲学)(PHPBLT #6)

結論からいうと

Page 8: Applicationとは何か(哲学)(PHPBLT #6)

Applicationとは何か

DIコンテナのこと

Page 9: Applicationとは何か(哲学)(PHPBLT #6)
Page 10: Applicationとは何か(哲学)(PHPBLT #6)

アプリケーションソフトウェア(wikipedia)

アプリケーションソフトウェア(英: application software)とは、ユーザーが要求する情報

処理を直接実行するソフトウェアである。

Page 11: Applicationとは何か(哲学)(PHPBLT #6)

アプリケーション(自己解釈)

Webアプリなら「リクエスト受けて、レスポンス返す」

コンソールアプリなら「引数受けて、レスポンス返す」

→ 「なんか入力を受けて、処理して、レスポンス返すやつ」っていう定義を、良さげな感じ

に設計・実装したやつが、「Applicationクラス」

Page 12: Applicationとは何か(哲学)(PHPBLT #6)

最近のPHPの各種フレームワークのApplicationクラス

Page 13: Applicationとは何か(哲学)(PHPBLT #6)

Applicationクラスの例

Laravel の場合

\Illuminate\Fandation\Application

Symfony の場合

(Symfony\Component\HttpKernel)

CakePHP の場合

\App\Application

Phalcon の場合

\Phalcon\Application

Slim の場合

Slim\App

Silex の場合

Silex\Application

Fuel の場合

Fuel\Core\Fuel

Page 14: Applicationとは何か(哲学)(PHPBLT #6)

Applicationクラスの探し方

オートローダの登録した直後くらいに作られてるやつが、だいたいそう。

Page 15: Applicationとは何か(哲学)(PHPBLT #6)

例えば

Page 16: Applicationとは何か(哲学)(PHPBLT #6)

Laravelの場合

ブラウザでアクセスしたときは オートローダ登録してrequire __DIR__.'/../vendor/autoload.php';

Page 17: Applicationとは何か(哲学)(PHPBLT #6)

Laravelの場合

ブラウザでアクセスしたときはApplication作って

Page 18: Applicationとは何か(哲学)(PHPBLT #6)

Laravelの場合

ブラウザでアクセスしたときは Applicationに登録されたWeb用の処理をする

Page 19: Applicationとは何か(哲学)(PHPBLT #6)

Laravelの場合

コンソール(ターミナル)からの

処理の場合

オートローダ登録してrequire __DIR__.'/../vendor/autoload.php';

Page 20: Applicationとは何か(哲学)(PHPBLT #6)

Laravelの場合

コンソール(ターミナル)からの

処理の場合

Application作って

Page 21: Applicationとは何か(哲学)(PHPBLT #6)

Laravelの場合

コンソール(ターミナル)からの

処理の場合

Applicationに登録されたコンソール用の処理をする

Page 22: Applicationとは何か(哲学)(PHPBLT #6)

CakePHPの場合

オートローダ登録してrequire __DIR__.'/../vendor/autoload.php';

Page 23: Applicationとは何か(哲学)(PHPBLT #6)

CakePHPの場合

Application作ってサーバでの処理として実行

Page 24: Applicationとは何か(哲学)(PHPBLT #6)

Applicationクラスの探し方実装面での定義

オートローダの登録した直後くらいに作られてるやつ

Page 25: Applicationとは何か(哲学)(PHPBLT #6)

で、正体なんなの???

Page 26: Applicationとは何か(哲学)(PHPBLT #6)

Laravelの場合https://github.com/laravel/framework/blob/master/src/Illuminate/Foundation/Application.php

DIコンテナ

Page 27: Applicationとは何か(哲学)(PHPBLT #6)

Symfonyの場合https://github.com/symfony/symfony-standard/blob/master/web/app.php

Page 28: Applicationとは何か(哲学)(PHPBLT #6)

Symfonyの場合

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/Kernel.php

Symfony system≒ワークフロー群

Page 29: Applicationとは何か(哲学)(PHPBLT #6)

Symfonyの場合

本当は、Symfonyの本質は、Doctrin ORM とか HTTP Fandation とか を まとめ上げ

る、「Bundler」としてのシステムだったりする。(と思う)

DIコンテナってことでよくね?(雑)

(Symfonyわかりません、誰か教えてください)

Page 30: Applicationとは何か(哲学)(PHPBLT #6)

CakePHPの場合

https://github.com/cakephp/app/blob/master/src/Application.php

Page 31: Applicationとは何か(哲学)(PHPBLT #6)

CakePHPの場合

https://github.com/cakephp/cakephp/blob/master/src/Http/BaseApplication.php

Applicationを作るには、設定ファイル(パス)が必要→Applicationとは、設定

Page 32: Applicationとは何か(哲学)(PHPBLT #6)

Phalconの場合

https://github.com/phalcon/cphalcon/blob/master/ext/phalcon/application.zep.c

DIコンテナ

Page 33: Applicationとは何か(哲学)(PHPBLT #6)

Slimの場合

https://github.com/slimphp/Slim/blob/3.x/Slim/App.php

DIコンテナ(pimple/pimple)

Page 34: Applicationとは何か(哲学)(PHPBLT #6)

Silexの場合

DIコンテナ(pimple/pimple)

Page 35: Applicationとは何か(哲学)(PHPBLT #6)

Fuel の場合

(ナンモ ナイト)

Page 36: Applicationとは何か(哲学)(PHPBLT #6)

Fuel の場合

オートローダ登録して

Fuel::init↑こいつじゃね

Page 37: Applicationとは何か(哲学)(PHPBLT #6)

Fuel の場合設定必要→Applicationとは、設定

Page 38: Applicationとは何か(哲学)(PHPBLT #6)

まとめ

現代において、良く使われるフレームワークでの

Applicationクラスとは、

DIコンテナである(多い)

ナ ナンダッテー!!Ω ΩΩ

Page 39: Applicationとは何か(哲学)(PHPBLT #6)

ご清聴ありがとうございました!!!