PHP フレームワークについて

2018年5月8日

みなさんこんにちは!タカモリです。

前回の記事で伝えさせてもらった通り、これからはパーフェクトPHPという書籍の内容にのっとって、フレームワークを作成していく。

かなり勉強はしたのだが、それでも未だに知識が全く追いつかない。。。

実際のsrcを書きながらの勉強については、ブログを書きながらの方がモチベーションも上がって楽しいし、アウトプットすることは頭の整理になるので、自分が勉強している内容をしばらくは、書いていきたいと思う。

かなり初めの方のブログでも伝えさせていただきましたが、私は初心者です。

私の書く内容には誤っている部分もかなりあることが想定できますので、鵜呑みにしないで下さい。将来的には一流になる予定ですが(笑)

何せフレームワークについては情報量が多すぎるので、自分でこのブログを書くにしても、一体何からやっていけばいいのかわからない。

ということで今回はおもしろい話ではないですが、フレームワークについて自分が勉強してきたことを自分の言葉で説明していきたいと思う。

何故自分の言葉で説明したいかというのには、2つの理由がある。

1.自分の頭の整理になるということ。

ブログや、実際に人に説明したりするときなどは、話す内容を考えているうちに、以外と自分が何も知らないということに気がつくことがよくあるので、わざと自分の言葉に直すことで自分の理解度を自分自身で確認し、わからなければ調べるというきっかけになるということ。

2.初心者にとってわかりやすい解説がプログラミングの世界には少ないということ。

自分もそうなのだが、わからないことをインターネットで調べると、マニュアルをそのまま書いてある内容みたいなのがたまにあって、「え?解説してる内容マニュアルと同じだけど、この人本当はこの意味知らないんじゃないの?」みたいなことを思うし、もちろんマニュアルと同じような内容なので、マニュアル自体の見方がわからない俺らのような初心者は、そのような解説を見たところで全く理解できない。

万が一、PHPのことを調べるつもりで俺のブログを見にきた人がいたとしたら、その人が理解できる内容にしたい。

 

という2点の意味から、自分の言葉で本の中身を進めていきたいと思う。

そしてsrcの中身でわからないことがあれば正直に言います!

「わからない」と!!

もうね、本を進めていると出てくる出てくる、何度・何回調べても次から次にでてくるマジで「意味不明なSRCども!!!

俺は英語も苦手なのだが、これから何度も出てくるユーザー定義関数の名前すら理解できんので調べてるレベル。。。。

今俺のこと笑った人!!これの意味わかる??

「Repository」

こんなん学校で習ったか!?ちなみにこれは倉庫という意味らしい。

ということで言いたいことはたくさんあるが、愚痴はこのへんにしておいて本題に入っていく。

 

今日はフレームワークについて簡単に説明する

まぁ、前回のブログでもフレームワークについての簡単な説明はしたので、結局これからフレームワークでどうゆうことをやっていくのかということについて話していきたい。

これを話す為には、まずMVCモデルというものを、ちょっとだけ語らなければならない。

MVCモデルとは、アプリケーションを作る際(俺の場合はブログ)に、モデル、ビュー、コントローラーという3つの役割の機能にわけてシステムを作ることである。

M・・・モデル

主にデータべスから、データの抜き取り、データの変更などを行う。

V・・・ビュー

ブラウザに出力する為の処理。主にHTMLの記述を行う。

C・・・コントローラー

モデルとビューを繋ぎ合せる役割

 

何故この説明がいるのかと言うと、将来的に作る予定の俺のブログシステムはMVCモデルで作っていくのだが、フレームワークを作成する時点で、将来的にMVCモデルでブログが作成されることを想定して作らなければならないからだ。

そして、フレームワークというのは、もちろん後に作成するブログシステム作成が、より簡潔に作れるように作成するわけなのだから、その為にはどうすればよいのかということを考えて作られている。

つまり、これから俺が教科書を見ながら作成するフレームワークは、後に作成するブログシステムをサポートする為に作成するということだ。

 

これから作っていくフレームワークの内容

フレームワークはオブジェクト指向で作成されている為、その中身には多くのclassが存在する。また、class毎にclassと同じ名前の専用のファイルを作成する。

このファイルとクラスの名前が同じであることにも、プログラム的な意味がある為、変えてはならない。

ということで、これから俺が作るファイルクラスの名前を書いておく。

RequestRouterResponseDbManagerDbRepositoryContrillerViewSessionApplicationclassLoader

の上記10個だ。今はまだ作ってはいないが、後ほどこの名前のファイルを作成し、そのファイルに同じ名前のclassを作成する。

 

今日はまず、ディレクトリ(フォルダ)を5つ作成する。

ディレクトリ名は、controllercoremodelsviewswebの5つだ。

気付いたかもしれないが、このディレクトリ名に上記で説明したcontroller(コントローラー)models(モデル)views(ビュー)という名前が入っている。この3つのディレクトリを利用して、将来的にブログを作ることになるのだ。

逆に言えばしばらくは使わない。

では、残り2つwebcore何なのかというと、webディレクトリルートディレクトリとして使用する為のもので、ブラウザから俺のブログへアクセスする際は、このディレクトリ以下にしかアクセスできないようにする為のものだ。

そして、coreディレクトリはこれから作成するフレームワークのsrcを格納する。つまり上で記述した、10個のファイルは全てこのcoreディレクトリに入る。

更に、今作成した5つのディレクトリは全てapplicationという1つのディレクトリに格納する。これで、これから作成するフレームワークの全貌が少し見えてきたかもしれない。

いや無理か、俺にも見えてない。。。(笑)  いや、ワロエナイ

でも、せっかく始めたプログラミングなので、是非この本の内容を理解して一流になってみたい!!!

ということで、次回からは、いよいよこれらのsrcをブログに書いていきたいと思う。