applicationとは何か(哲学)(phpblt #6)

Post on 03-Mar-2017

172 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Applicationとは何か(哲学)

しとりー@ndxbn

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

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

PHP歴6年くらい

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

@ndxbn

ことの発端

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

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

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

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

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

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

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

ということで、

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

結論からいうと

Applicationとは何か

DIコンテナのこと

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

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

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

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

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

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

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

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

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

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

Applicationクラスの探し方

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

例えば

Laravelの場合

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

Laravelの場合

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

Laravelの場合

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

Laravelの場合

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

処理の場合

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

Laravelの場合

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

処理の場合

Application作って

Laravelの場合

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

処理の場合

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

CakePHPの場合

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

CakePHPの場合

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

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

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

で、正体なんなの???

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

DIコンテナ

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

Symfonyの場合

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

Symfony system≒ワークフロー群

Symfonyの場合

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

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

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

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

CakePHPの場合

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

CakePHPの場合

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

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

Phalconの場合

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

DIコンテナ

Slimの場合

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

DIコンテナ(pimple/pimple)

Silexの場合

DIコンテナ(pimple/pimple)

Fuel の場合

(ナンモ ナイト)

Fuel の場合

オートローダ登録して

Fuel::init↑こいつじゃね

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

まとめ

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

Applicationクラスとは、

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

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

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

top related