フレームワークを使用する必要があるのはいつですか?[閉まっている]


15

私はWebプログラミングの初心者であり、現時点ではPHPについて学んでいます。CakePHPなどのPHPフレームワークを使用する必要があるのはいつですか?これや他の同様のPHPフレームワークが私に提供するものは何ですか?そして、プロフェッショナルになるためにフレームワークを使用することは本当に重要ですか?

  • そして、好きな機能を提供する独自のフレームワークを作成できますか?

3
それが提供するものを理解し、必要なときに回避できる場合は、[xyz]フレームワークを使用します。フレームワークは、フレームワークの使用方法を知っており、選択の制限を理解している熟練者向けのツールです。どのような状況でも、フレームワークのみを学習して言語を学習しないでください。それは、つま先や周辺視野を意図的にオフにするようなものです。ヒントは、セッションが奇妙な:)注意してください。.. PHPのフレームワークは、使用するものに応じて振る舞う
ティム・ポスト

回答:


10

PHPに慣れたら、フレームワークの使用を開始できます。そして、常にそれらを使用する必要があります:

  1. すべてを再コーディングするよりもはるかに高速です
  2. データベースの変更やビューの変更など、変更が簡単になります
  3. MVCパターンフレームワークでよく使用される他の人との作業も簡単になります。

独自のフレームワークを作成できますが、私は絶対にそれを推奨しません。複雑で、すでに多くの優れたフレームワークが存在し、欠落している機能を見つけることはまずありません。また、まったく新しい機能を作成することなく、独自の機能を追加する方法を提供します。


2
+1 for PHPに慣れているときは、フレームワークの使用を開始できます。 あなたのポイント3)は、フレームワークが非常に似ている場合にのみうまく機能します。「いくつかの異なるフレームワークを多用する前にフレームワークを作成しないでください」
-peterchen

7
「あなたは常にそれらを使うべきだ」という声明には絶対に反対します。それらはすべてのプロジェクトに適しているわけではなく、しばしば変更をより難しくすることになります。ユーティリティはフレームワークよりもはるかに価値があります。
ニコール

@NickCの+1、私はこれ以上同意できませんでした。一部のフレームワークは動的であり、物事を簡単に変更できると主張しますが、特定のポイントに到達すると、あなたは...できません。私はそのようなことについて多くのことを言いました:)
スティーブヒル

MVCは、適切に使用すれば、他の人がより少ない学習曲線でコードに足を踏み入れることができる非常に優れた共通基盤であることに同意します。しかし、MVCはここで輝く星であり、フレームワーク(またはその欠如)は単なる実装です。
ティムポスト

これらはすべて理論上のものであり、実際には機能しません。PHPフレームワークは、これらすべてを難しくする可能性が高くなります。スクラッチで記述された平均的なアプリケーションには、約500〜5,000行のフレームワークコードが必要です。それは約1週間の仕事の平均です。それ以上の場合は、おそらくライブラリを書いているか、内部プラットフォームを作成しています。
jgmjgm

9

フレームワークなしでいくつかのページを構築します...あなたは基本的に試行錯誤によってあなた自身のフレームワークを書き始めます。それが終わったら、フレームワークに移動して、どれだけ時間を節約できるかお楽しみください。独自のフレームワークを構築しようとすると、いくつかのことを学ぶことができ、すでに存在するフレームワークを評価するのに役立ちます。

PHPを初めて使用したとき、フレームワークは複雑な時間の無駄だと思いました。今、私はCodeIgniterを単純なプロジェクトにも使用しています。起動して実行するのに約1分かかります。すでに多くの優れたライブラリを利用できます。また、前述のポスターで述べたように、ほとんどのフレームワークは拡張可能であるため、必要な機能をいつでも追加できます。


2
しかし、フレームワークのコードが希望どおりであることを後で確認するにはどうすればよいですか?すべてのプログラマーが独自のスタイルを持っているということですね。フレームワークはどうですか!!
ゴマ

1
@Goma言語はどうですか?私が望むようにすべてを行うものはまだ見つかりません。フレームワークは、非常によく似たものを追加するだけです(おそらく、より高い抽象化レベルで)。真剣に、コーディングとは「すべてを私が望むように見せる/振る舞う/正確にする」ことではありません。有益なものを作成することです。コードは、そのコードを最初の場所。
クリストファー・クロイツィヒ14

そして今、@TaylorOtwellが... Laravelの生みの親である
ホーズマーキュリー

4

Niphraが言ったように、フレームワークなしでPHPを使用できる場合にのみフレームワークの使用を開始してください(つまり、データベースへのアクセス、ヘッダーとコンテンツの送信、文字列処理、データ操作など)。あなたの質問に関する限り:

  • CakePHPなどのPHPフレームワークを使用する必要があるのはいつですか?プロジェクトがいくつかのPHPファイルを超えて大きくなると、ロジックを明確な要素とモジュール化/共有機能(セッションなど)に強く分離し始めた瞬間に、フレームワークを使用する必要があります。

  • これおよび他の同様のPHPフレームワークが私に提供するものは何ですか? 抽象化; データベースと直接対話する代わりに、オブジェクトリレーショナルマッピング(ORM)を使用して、データベース内のデータ間の構造と関係を管理できます。多くの言語のほとんどのフレームワークには、アプリケーションのデータベースレイヤーとのやり取りを容易にするORMが用意されています。同様に、フレームワークは多くの場合、ユーザーの操作に応答するレイヤーを分離します。最も一般的な分離は、Model View Controller(MVC)パラダイムです。これは、簡単に言うと、データベースロジックをモデル(多くの場合、ORMへのインターフェイス)に抽象化し、リクエストを処理し、モデルとコントローラーとやり取りします。実際のHTML / PDF / image / etcのレンダリング。ビューに。フレームワークは、多くの場合、ルーティングなどの他のツールを提供します(リクエストURIの複雑な処理を可能にするため(例:リクエストのマッピング "http://example.com/users/1 "コントローラーUsersに送信されます。コントローラーUsersは、IDが1)のユーザーモデルと、セッションの抽象化およびその他の基本構造を検索します。

  • また、フレームワークを使用してプロフェッショナルになることは本当に重要ですか?必ずしも; フレームワークは生活を楽にします。ただし、プロになるために使用する必要はありません。フレームワークは便利な抽象化と標準化を提供しますが、ほとんどの場合、それらは要件ではありません。


3

いくつかの答えを読んだ後、最初に、どのフレームワークを使用するか、またはフレームワークを使用するかどうか(プロとして)の選択肢があまりないことを伝えたいと思います。私はあなたを怖がらせたくありませんが、1つのフレームワークから別のフレームワークへの移動を可能にし、同時に複数のフレームワークを使用できるように、PHPについて十分に理解する必要があります。

CakePHPなどのPHPフレームワークを使用する必要があるのはいつですか?

これに対する普遍的な答えはありません。専門家として、あなたは特定の問題を解決する任務を負います。これは、特にクライアントが特定の要求を持っている場合、各プロジェクトの時期と内容の決定要因になります。しかし、一般的に言えば、独自のフレームワーク(WordpressやPHPBBなど)を持つ既存のアプリケーションを変更または拡張する場合を除き、PHPでは常に何らかのフレームワークを使用します。

これや他の同様のPHPフレームワークが私に提供するものは何ですか?

ダークが言ったように、それらは抽象化を提供します。これが意味することは、彼らが共通のマルチステップ手順を取り、可能な限りシンプルで合理化することを試みることです。要するに、彼らは一般的なタスクのために水だけのソリューションを提示しようとします。

そして、プロフェッショナルになるためにフレームワークを使用することは本当に重要ですか?

一般的に言って、専門家になるためにフレームワークを使用することは重要ではありません。しかし現実的には、少なくともいくつかの一般的なフレームワークに精通していなければ、あまりキャリアを積むことはできません。フレームワークのないPHPは、stdライブラリのないC ++に似ています。あなたはそれを必要とせず、あなたは言語の下位レベルの埋め込みブロック機能を直接使用するので、実際にそれなしでより多くを行うことができますが、同じことをするのにはるかに時間がかかります。

そして、好きな機能を提供する独自のフレームワークを作成できますか?

はい。実際、意図しない場合でも、そうなる可能性があります。これにより、私は拡張可能なすべてのフレームワークを意味するのではなく、タスクを実行する基本的な機能とスクリプトのツールバッグのように、平均的なフレームワークで処理できるほど一般的または汎用的ではありません。私は基本的に、いくつかの異なるcurlおよびストリーム/ソケットユーティリティを備えた、さまざまなファイルシステム、プロセス処理、およびrex-ex tidビットで構成されています。


1

データベースとオンラインAPIの対話をするために私自身の方法をハッキングするのに何年も費やした人によくあり、フレームワークを使用し始めたばかりで、可能な場合は少なくとも彼らが何をしているのかを理解しているときに使用してください。

データベースを初めて操作するときにすぐにRedBeanにジャンプしないで、最初にDBを手動で操作してください。これにより、実際にDBをフェッチして実行していることを完全に理解できます。これは、スケーラビリティに非常に役立ちます。また、使用しているフレームワークが必要なことを行っていないときに、独自のソリューションを作成することもできます。

何が起こっているかを理解したら、フレームワークを使用してください!とても簡単になります。クエリを保存してから結果をループするという狂気mysql_fetch_assocはすべてなくなり、単一の呼び出しになります:$book = R::load( "book", $id )。生産性が大幅に向上し、将来のバグを修正したり、将来の機能をはるかに簡単に追加したりできます。


1

フレームワークは、基礎となるテクノロジーを十分に理解しており、フレームワークが何をするのか、なぜそれが良い(または悪い)のかを十分に理解しているときに使用します。

フレームワークは一種のメタツールであり、ツール(言語、データベース)を使用して作業の詳細を心配せずに少し速く作業することができます。ツール。

起こりたくないのは、ツールの代わりにフレームワークを学び、特定のやり方に運命づけられ、最終的には基礎となる言語と概念を熟知しないことです。松葉杖ではなく道具。


1

自分が同じことを何度も繰り返していることに気付いたら、周りを見回して、自分でやったのと同じ冗長なことを行うフレームワークがあるかどうかを確認してください。誇大宣伝のためにフレームワークを使用しないでください。個人的にはCodeIgniterとRasmus Lerdorfの「フレームワークなしのPHP MVCフレームワーク」が好きですhttp://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html


私はいくつかの「フレームワークなしフレームワーク」を書いて、あらゆる種類の管理/公開システムに簡単に移植できない、ほとんど静的な(そして巨大な)サイトに新機能を追加する苦痛を緩和しました。しかし、私はまったく新しいプロジェクトのために自分自身を転がすことはしません(フレームワークが必要な場合はCIを使用するだけです)。
ティムポスト

@Tim Post通常、この質問に対する白黒の回答はありません。それはすべて手元のプロジェクトに依存し、元の投稿では特定のプロジェクトに関する詳細は提供していませんでした。
プログラマー

1
フレームワークの熱狂者から反対票を得たようです。
プログラマー

私ではありませんでした:)誰かがあなたが投稿したリンクに反応しているかもしれません。
ティムポスト

@Tim Postへー!そのため、これらのコメントの両方を分離するようにしました。:D
プログラマー

-1

フレームワークx、y、またはzを使用する理由を慎重に検討することをお勧めします。すべてのフレームワークは機能を提供するだけでなく、自分で実装する必要はなく、考え方も提供します。Spring、JEE、Rails、またはDjangoをご覧ください。わずかな時間でWebアプリケーションを踏み出すのに十分な4つのフレームワーク。

ただし、4つすべてが、Webアプリの構築方法に関する独自の考え方を推進しています。それがあなたのニーズに合わないか、あなたの味に合わないなら、あなたは物事をさらに進めるのに苦労するでしょう。

これは非常に急進的な比較でしたが、おそらく小さなライブラリを構築することでニーズに合うでしょう。しかし、フレームワークを知ることは、大規模なチームで仕事をしたり、新しい仕事を見つけるのに役立ちます。それは、ソフトウェア開発全体に興味があることを示しているからです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.