• ベストアンサー

phpフレームワーク

phpでフレームワークの勉強をしようと思うのですが、フレームワークをする前に平打ち?(フレームワークに依存しないでゼロから自作する)でこれを勉強しておけ! みたいなものはありますか? それを使った代表的な製品とかも教えてくれると嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

PHPでフレームワークの勉強をされるということは、Webアプリケーションのためのフレームワークの勉強をされる、という前提で回答します。 ■フレームワークのをする前に平打ちでこれを勉強しておけ ①MVCについて知ること まず、現在の代表的なフレームワークは、laravel、CakePHP、Symfony当たりだと思います。 これらはMVCというデザインパターンで、 Model(ビジネスロジック、要は計算処理とかそういうの)と、View(HTMLとか画面に表示する部分)と、Controller(リンクが押されたときに画面をどのように遷移するとか振り分けの処理)を個別に分離することで、役割分担をする、という思想です。 これをオブジェクトを使うにしても使わないにしても分離するとどのようにいいことがあるのか、というのを体感しておくとよいと思います。 ②HTTP通信とは何かを知ること Webアプリケーションなので、HTTP通信でPOSTされたりGETされたりするわけなので、それらの役割が何なのか、知っているのと知らないので、その処理がなぜ必要なのかなぜそうするのか、といった理屈を理解するのの助けになると思います。 ③GoFのデザインパターン オブジェクト指向言語のJavaで、GoF(Gang of Four)のデザインパターンというものがあります。 プログラムを記述するうえで、プログラムのメンテや記述が良くなる思想です。 これらのうち、PHPで採用可能なパターンもあるので、誰かがPHPでやってみた、みたいな記事を見て、学習されるとよいです。 これらは有用なものなので、これから質問者さんが学習されるフレームワークにおいても採用されているものがあるので、学習のしやすさに影響すると思います。 ④PHP固有の特殊な処理について触っておく PHPのオブジェクトにはマジックメソッドと呼ばれる特殊な挙動をする仕組みがあります。 私自身は、2021年の最新の出来事からはだいぶ離れてしまっていますが、現在でも利用されているのではないかと思います。 https://www.php.net/manual/ja/language.oop5.magic.php ⑤PHP固有の特殊な処理その2 IDE(VisualStudio Codeや、Eclipse、netbeansなど)と相性が悪いので積極的に採用をするべきではないものの、たまに見かける奴らです。 ・call_user_func_array https://www.php.net/manual/ja/function.call-user-func-array.php 関数名や、クラスメソッド名を文字列として記述したものを実行する関数です。 ・可変変数 https://www.php.net/manual/ja/language.variables.variable.php 変数名に変数を使えるという悪魔の所業です。 使いどころを間違えると誰も読めないプログラムが出来上がりますが、逆に誰かがそれを採用していた場合に、知っていれば自衛できます。 ⑥IDEとPHPDocコメント 昨今のIDEは、PHPDocを正しく解釈してくれることが多いので、書いたプログラミングには必ず記述するようにする練習をされるとよいと思います。入力支援(インテリセンス)や、定義元にジャンプするといった場合に、コメントを解釈することが多いです。 ⑦PHPとは関係のないあれこれ PHPの分岐処理などで採用しずらい事象もCSSやJavascriptにより、簡単に解決できることが多いです。処理の手法に困ったら検索ワードにこれらでの解決方法がないか当たる、という発想も覚えておいてください。 ⑧PHPで他所においたWebアプリと通信する 昨今、自前で用意した情報だけですべてを構成する、ということもなくなりつつありますので、HTTP通信をして、他所と連携する、ということもあると思いますので、それの原始的な方法を押さえておくのもありかな、と思います。 ・fsockopen https://www.php.net/manual/ja/function.fsockopen.php ・stream_socket_client https://www.php.net/manual/ja/function.stream-socket-client.php ・cURL https://www.php.net/manual/ja/function.curl-init.php 上記はどれも使い方や細やかさが違うだけで同じようなものです。 ■代表的な製品とか 逆にフレームワークをよく学習してから、独自製品の解析などをするのが良いと思います。 フレームワークは、  Webアプリが作りやすいように構成されているもの=汎用的なもの なので、「フレームワークではこうしているのに、この独自製品はなぜこのように処理しているのだろう」という思考の流れのほうが自然な気がしています。 それでもあえて知るというのであれば、Wordpressは、完全に独自の製品と思うので、何らかの発想の手助けになると思います。 ※私自身、最近の現場からはだいぶん離れてしまっているので、もっと良いものがあるかもしれませんが。。。 以上です。

dhtfyjh
質問者

お礼

ありがとうございました

関連するQ&A