Discuz、WordPress、各種 cms などの主流の PHP オープンソース アプリケーション
は、基本的にオープンソース フレームワークを使用して開発されていません。
歴史的な理由に加えて:
1. フレームワーク開発を使用すると、より安全で成熟し、安定しますか?
2. これらのオープンソース プロジェクトがオープンソース MVC フレームワークを使用しない原因は何ですか?
3. オープンソース MVC フレームワークを使用することの欠点は何ですか?
返信内容:
こんにちは、友人、招待してくれてありがとう。私の理解が誤解を招くのではなく、役立つことを願っています。それでは私の意見を述べさせていただきます。
質問から、対象者が PHP に非常に精通していることがわかります。私自身はプロの PHP 者ではありませんが、それを学び、実際に実践しました。低コスト、高速開発、高性能のPHPはまさに逆襲の武器だと感じます。話がそれましたが、今日は言語については議論しませんが、オープンソース、フレームワーク、MVC などの話題に移る必要があります。
まず、投稿者の質問についてお話しますが、mvc をどのように理解しているのかわかりません。 MVC は設計思想と設計パターンです。これは真実であるはずですが、フレームワークのセールスポイントは、MVC モデルに従って開発されたからではありません。しかし、実際には、特定の種類の問題に対して迅速な解決策が提供されるからです。あなたはそのようなニーズがあるのでそれを使用し、それはあなたに便利さをもたらします。特定の MVC フレームワークの紹介は基本的に次のようなものです。xx は xx の問題を解決するために使用される MVC フレームワークであり、それに付属する MVC フレームワークではなく、何が解決できるかに重点が置かれていることがわかるはずです。フレームワークは、プログラマー向けの製品のようなものです。製品が特定の種類の問題に対処するように設計されていない場合、その製品の意味を言うのは困難です。 MVC を製品としてのみ考えると、その製品は何でもできますが、何もうまくできず、この種の製品は誰も必要としません。
実際のところ、フレームワークの選択は開発モデルではなくフレームワークの開発目的に依存することが多い、と言いたいだけです。
フレームワークと言えば、すぐに Java の ssh フレームワークを思い出しました。 Java自体の一部になっているようです。 Java を学習した人は、通常、SSH フレームワークを学習します。そしてsshの利用率も非常に高いです。図書館で Java の分厚い本を読みながら勉強していたときのことを思い出します。ああ、過去を振り返るのは難しい。さて、早速本題に入りましょう。
次に、フレームワークの導入によって生じる可能性のある問題、
-
パフォーマンスの低下について説明します。どのフレームワークもパフォーマンスの低下を引き起こすため、高いパフォーマンス要件を持つ一部のプロジェクトではフレームワークを使用せず、独自のシナリオに合わせてフレームワークをカスタマイズして最適化することがよくあります。もちろん、このパフォーマンスは現在ではおそらく無視できるでしょう。
-
複雑さが増加しました。学習コストと導入コストは直面しなければならない問題です。
-
適応力。フレームワークを導入したら、決まったパターンに従ってそれを使用する必要があります。ここに自分で書いたコードを追加し、別の場所に少し追加します。これらはすべてフレームワークによって規定されています。あなた。事後のメンテナンスに関しては、これは実際には非常に良いことかもしれませんが、それに適応する必要があります。
-
摩擦。これを言うのは難しいことですが、一部のフレームワークの一部はあなたのニーズに非常に適しているかもしれませんが、一部の部分はあなたが望むものではない、あるいはその逆である可能性さえあります。現時点では、ハッキングするか、フレームワークのソース コードを変更することができます。要するに、使っていて特に満足できるものではないということです。
フレームワークについて話した後、PHP 言語自体について話しましょう。習得と使用が簡単な言語として、多数の組み込み関数があります。多くの操作を自分でカプセル化して実装する必要はなく、組み込みの操作で十分強力であることがわかります。以前はMVCの影響でPHPでこんなことを書いていました。まずmodule、view、serverの3つのディレクトリを作成し、この考え方に従って対応するコードを埋めていきます。これは mvc の単純な実装ですか?したがって、私は個人的に、PHP の組み込みの力によってフレームワークの使用が減る可能性があると感じています。フレームワークは抽象的すぎたり、具体的すぎたりすることはできません。 PHP ではこれを把握するのが困難です。場合によっては、php コード スニペットが必要かフレームワークが必要かどうかを検討する必要があります。
Discuz や WordPress などはなぜオープンソース フレームワークを使用しないのですか?私も答えてみたいと思います。しかし、それは単なる推測です。
これらは多くの場合、単一の責任と明確な目標を持ち、PHP を使用して開発されるため、コードの量は必ずしも多くありません。フレームワークでは現場のニーズに柔軟に対応することが難しく、複雑さが増します。この種の人気のある製品の場合、ほとんどのユーザーは迅速なインストールと使用を必要としますが、少数のプログラマーは変更やカスタマイズを希望します。したがって、ニーズが何であっても、複雑さは決して良いことではありません。考えられるもう 1 つの理由は、作成者が他人のコードを見下していることです。何でも自由に書いてください。オープンソース コードは自由を追求することが多く、商用プロジェクトは効率を追求することがよくあります。したがって、商用プロジェクトではフレームワークがより頻繁に使用される傾向があります。
私はそのようなフレームワークについて悪口を言いました。これが私たちの問題の焦点だからです。実際、優れたフレームワークを使用すると、多くの作業と時間を節約できます。つまり、フレームワークは良いものですが、多くの場合悪いのは、フレームワークを理解していないプログラマーに遭遇することです。
私たちの誰もが、個人または集団として、自分自身のニーズを明確に理解し、オープンソース フレームワークを選択するときに使用するフレームワークを理解する必要があると思います。必要な長所と短所を比較検討した後でのみ、フレームワークを使用するかどうかを決定できます。いつでもフレームワークを使用できるわけではありません。そうしないと、真実を知ったときにただ涙を流すだけになってしまいます。
友人があなたが言及している php オープンソース mvc フレームワークを指定していただければ、質問にもっと適切に答えることができるかもしれません。上記はあくまで私の勝手な意見です。
あなたが言及したオープンソース プロジェクトの範囲は少し広いので、どのオープンソース プロジェクトを調べたのかわかりません。さまざまなオープンソース プロジェクトにはさまざまな目的と適用可能なシナリオがあります。私が見た限り、それらは次のカテゴリに大別できます:
- 非常に厄介な問題や難しい問題の解決に役立つ基本的なツール ライブラリ。これにより、フロントエンド分野の jQuery などのビジネス ロジックに集中できるようになり、ブラウザの互換性に関する多くの問題がカプセル化され、フロントエンド エンジニアに非常に統一されたインターフェイスが提供されます。データ レイヤー、ロジック レイヤー、ビュー レイヤーなどが関与する Web サイトのユーザー リクエストの処理や応答など、特定のタスクの典型的なワークフローを整理するのに役立ちます。これらのフレームワークのほとんどは、比較的成熟したデザイン パターンを多く使用しています。もちろん、これらのフレームワークを拡張しやすくするために、ファクトリ モードやプロキシ モードなどの他のモードが使用されます。たとえば、この分野には非常に多くのフレームワークがあります。 、JavaのSpring、PHPのCake、Zend、Think、JavaScriptのバックボーン、nodejsのexpress、pythonのdjangoなど。
一般に、すべてのオープンソース プロジェクトは、作成者が自分の仕事やスキルの蓄積を他の人が使用できるように公開し、他の人からの貢献を期待して、全員が火に油を注ぐ場所です。現在、これが github にあります。多くのプロジェクトに当てはまります。これらのプロジェクトでは、後発者の仕事が巨人の肩の上に立っていると言えます。
この 2 社が開発していた頃は、MVC の考え方はまだ PHP では普及していなかったように思います。 - MVC は現在 PHP でも普及しており、すでに独自のフレームワーク システムを持っています。
以前彼らのソースコードを見たことがありますが、狂人が書いたような気がしました。彼らのチームがどう思っているかはわかりません。おそらくそれはプロセス指向のアジャイル開発です。あるいは、パフォーマンスやその他の理由によるものかもしれません。
しかし、現在のオープンソースプログラムを見ると、PHPWIND、SHOPEXなど基本的にMVCを踏襲しており、やはりMVCは必然の方向性です。
フレームワークを使うかどうかも検討中ですが…冗長なコードを自分で開発するのは大変そうな気がします…。
個人的には、フレームワークを使用するということは、フレームワークを研究することにエネルギーを費やすよりも、自分でフレームワークを作成する方が良いと考えています。 (大規模なプロジェクトでは、フレームワークの拡張と変更が非常に頻繁に行われます。)
中国のオープンソースのソーシャル質疑応答プログラムである WeCenter は、Mvc フレームワークを使用してみることができます。
MVCは非常に優れており、開発効率はかなり高いと思います。
dedecms のソースコードを読みましたが、少し書き方が悪いです。