日々の忘備録とリファレンス

PHPマニア

HTML・CSS・PHP・jQuery・Mysql・Linuxの総合情報サイト

PHPを中心にしたIT用語など、サーバー用語からTCP/IP用語まで

HTML・CSS・PHP・jQuery・Mysql・Linuxの情報サイト

+
Share
Bookmark
Follow

PHP独自フレームワーク・オレオレフレームワークのこだわり

独自フレームワークを作った理由

独自フレームワーク
いわゆるオレオレフレームワークといわれるものです。

今ではそれを育てるのは生き甲斐の一つになっています。

フレームワークを作ろうと思ったきっかけは、ある日ホームページを作るためにHTMLCSSを勉強し始めました。

しかし、全てのページを一から書くのは面倒だったし、何より入力formの向こう側を知りたかったのでPHPを勉強した。

PHPをまとめていくうちにばらばらになっている事に気付き、うまくまとめるにはフレームワークがいい事が分かった。

しかし、既存のフレームワークを使おうとなると、中身が知りたくなり、気付いた頃には自分でフレームワークを作っていた。

自分のフレームワークが大きくなるのが楽しくて、日に日に長大になっていった。

そして色んな勉強が楽しくなり、少しずつプログラムを足しながらまとめていった。

でも正直2、3年で作れるようなものではなかった。
5年かけても作れるようなものではなかった。

そして今でもまだまだ広げていきたい部分もある。

ただ、Wordpressのようなブログも一瞬で作れ、Wordpressのような管理画面も一瞬で作れるようになった。

このサイトも自作のPHPフレームワークで出来ており、一から全てフルスクラッチで構築しています。

Wordpressで作ったのと同じようにブログ機能があり、関連記事とかもあります。

PHPに最適の共用サーバー

大手GMOの安心サーバー

ConoHaサーバー

お名前.comのサーバー

お名前サーバー

PHPフレームワークとは

PHPフレームワークの種類
フレームワークとは何か。
それは、開発しやすいように組み立てられたオブジェクト指向型のプログラム群です。

フレームワークJavaでもrubyでもあります。
Javaは元々オブジェクト指向、rubyはRuby on Railsというフレームワークにほぼ決まっているようなものですが、PHPは様々なフレームワークがあり、選択の幅が色々あります。

有名なPHPフレームワークは、

・CakePHP
・ZendFramework
・Symfony
・CodeIgniter

などがありますが、現在一番流行ってるPHPフレームワークは

・Laravel

でしょう。

フレームワークによってもちろん関数も異なってきますし、クラス名も異なってきます。
なので、会社や制作プロジェクトによって使うフレームワークは異なってくるので、一つ使えれば全て対応出来るということではありませんが、作りやフレームワークの方向性は基本同じですので、構成を理解することはフレームワークを理解することにとって重要です。

ほとんどといいますか、知っている限り全てのフレームワークはオブジェクト指向プログラミングで書かれており、MVCフレームワークになっています。

ではオブジェクト指向プログラミングやMVC構造について書いていきます。

オブジェクト指向とは
オブジェクト指向とは何か?

それは、階層型構造になっているプログラムで、データを取得するときに引き出しのように整理されているので、プログラムに慣れて来たら、オブジェクト指向でないと落ち着かなくなる。それくらい必要なものであり形式であります。

フレームワークは、そのオブジェクト指向プログラミングで形成されています。

オブジェクト指向を使わずにプログラミングしてしまうと、関数と関数、またはクラスとクラスの関係性が薄れ、まとまりがなく、長大なプロジェクトになってくると何を書いているのか分からなくなってくるでしょう。

また管理のしやすさの面でもオブジェクト指向プログラミングは重宝します。

階層型プログラミングでまとめる事によって、コードを修正する際にもあちらこちらを探したり修正する手間が省け、修正コードも見つけやすくなるといった利点もあります。

MVCフレームワークとは
フレームワークは、基本的にMVC構造になっています。

MVC構造とは、

Model(モデル)
Controller(コントローラー)
View(ビュー)

の略で、Modelは主にデータベース関係、Controllerは処理関係、Viewは表示関係になります。

ModelやController、そしてViewの中でも枝分かれし、そしてそれらを統合するクラスもあります。

MVCの中でもオブジェクト指向型になっているのですね。

処理の流れとしては、まずサイトを表示するリクエストはViewで行われて、それをControllerで処理し、データベースの連携が必要ならModelに受け渡し、データベースの処理が終わるとそれをControllerに受け渡し、最後にViewで表示するといった仕組みです。

Model
Modelではデータベース連携のためにSQL文を生成したりします。

・select文
・insert文
・update文
・delete文

を中心に、様々なSQL文を生成し、データベースからデータを取り込んだり編集したりします。

Controller

Controllerでは様々な処理の設定、formの値の連携、文字列の加工や、エスケープなどの処理、データベースを利用するならModelへの連携なども含まれます。

View

Viewでは主に表示関連になります。
smartyやbladeようなテンプレート式のファイルの方法もありますが、PHPHTMLに埋め込みできる特性があるので、PHPで作るのも全然いいと思います。
Controllerで処理されたデータ、もしくはModelから取得されたデータベースのデータを表示したりforeachで回しながら表示したり、生のhtmlファイルも含まれます。

PHPに最適の共用サーバー

大手GMOの安心サーバー

ConoHaサーバー

お名前.comのサーバー

お名前サーバー

独自フレームワークは需要はありません

長年開発している独自フレームワーク。
Laravelなどのフレームワークが一般化している中、世間的には独自フレームワークは敬遠されているし需要がないとされている。

ただ私はPHPの独自フレームワークを育成させることが生き甲斐の一つです。
なぜなら、PHPが大好きだから。
なので需要が有る無い関わらず、自作のPHPフレームワークを育てています。

既存のフレームワークを使うと、もちろんコアプログラムは分かりません。
ただ普通に開発するには、特に内部の仕組みはフレームワークに任せて構築すればいいでしょう。
でもそれが私は嫌でした。
一から仕組みを理解して作りたかったのです。
でもそれはとても長い道のりでした。

独自フレームワークが敬遠される理由は色々あります。

PHPに最適の共用サーバー

大手GMOの安心サーバー

ConoHaサーバー

GMOの格安WordPressサーバー

ロリポップサーバー

独自フレームワークが敬遠される理由

独自フレームワークが敬遠される理由は、

一つは、汎用性がないからです。LaravelやcakePHPなどのフレームワークがある中、独自フレームワークの場合だと誰かに管理を任せる場合、一から学んでもらう必要があるからです。
一からフレームワークの仕様を学ぶのは、面倒です。しかもマニュアルも無いとなると、かなり心が折れます。


もう一つは、作られたフレームワークのプログラムがレベルが低いことが多いからです。中途半端な自作フレームワークを作るなら、絶対世間的に認められている既存のフレームワークを使ったほうがセキュリティも安心です。

ではどういった時に独自フレームワークは発揮をするのか。それは自己満したい時だけです。ただそれだけです(笑)
ただ、PHPが本当に好きならやってみるのもありです。

独自フレームワークを作れば仕組みが全て理解出来るので、さらにPHPが好きになります。フレームワークの仕組みが内部から分かります。

ただ、そこまで作るより、私は流行りの既存のフレームワークを学んで、職に就く事をおすすめします。

なぜなら、ガチでPHP独自フレームワークを作るなら、1年2年そこらでは作れません。毎日取り組んでも、まともに作るには5年以上はかかります。理由は、一般的に既にフレームワークやライブラリに組み込まれいる仕組みや脆弱性や機能などを一から理解し、それをプログラミングしていかないといけないからです。正直言って時間の無駄になります。

ただPHPが本当に大好きで、処理の内部も知ってみたい、自分で作ってみたいという好奇心旺盛でチャレンジャーなら、作ってみるのもいいかもしれませんね。

最後に・・・

今回は
  • 独自フレームワークを作った理由
  • PHPフレームワークとは
  • 独自フレームワークは需要はありません
  • 独自フレームワークが敬遠される理由
についてまとめてみました。

最後までお読み頂きありがとうございました。

[カテゴリ]

2020年12月06日

関連記事

Wordpressの魅力微妙なWordpressっぽさを表現したい。いつもブログを作る時...

2020年12月16日

確認画面とはform機能によく付随される確認画面。確認画面は、お問...

2020年12月13日

Copyright© 2019-2021 php-mania.com All Rights Reserbed.

当サイトに掲載している文章、画像などの無断転載を禁止いたします。