Discuzx2 開発標準プロセス

WBOY
WBOYオリジナル
2016-07-29 08:54:571163ブラウズ

discuz x2 のソースコードを 1 か月間勉強します。その後、開発経験を積みました。経験を書き留めることは一種の振り返りでもあり、過去を振り返り、新しいことを学びます。

まず、各ルート ディレクトリ ページのおおよその読み込み処理シーケンスを理解する必要があります。ここでは、ルートディレクトリにある標準ファイルは使用しません。直接的な例として、newModule.php という名前の新しいモジュールを作成します。

プロセスは次のとおりです:

1. newModule.php は最初にコア クラス ファイルをロードします。このファイルは、dz 全体のコア オブジェクトを初期化します。サンプルモード。名前は $discuz で、このオブジェクトにはいくつかの重要な機能があります。まず、$_G のパラメータがこのオブジェクトの var 属性を参照します (つまり、$discuz->var = $_G)。次に、$this->var を使用して、オブジェクト内およびオブジェクト外で $_G を操作します。たとえば、独立した関数では、$_G はパラメータの操作に使用されます。次に、このオブジェクトはデータベース オブジェクトやその他のオブジェクトを含む他のすべてのオブジェクトを参照し、オブジェクト内でオブジェクトを操作するときに参照を使用して同期された変更を取得します。 (実際、この設計はもともと非常に複雑ですが、それは理解できます。以前の設計を考慮するために、このような純粋な OO PHP 設計はタブーです。レジストリまたは組み合わせモードを使用することをお勧めします)

2.サポート ファイル、/source /function/function_core.php ファイルには、すべてのコア関数が含まれています。コア関数とは、コア クラスをインスタンス化する必要があるときに使用されることを意味します。

3. モジュールのロードに必要な独立関数、/source/function/function_newModule.php ファイルは、モジュール自体に必要な独立関数です。これらの関数は、論理的またはビジネスの観点から、特定の関数に属すべきではありません。オブジェクトまたはクラスの内部。

4. モジュールのカスタマイズされたクラス ファイル、/source/class/class_newModule.php ファイルをロードします。このファイルは、新しいモジュールに必要なクラス、特にドメイン ドライバーまたは OO 趣味を作成できます。

5. モジュールのカスタマイズされたアクション ファイルをロードします。アクション ファイルとは何ですか? このファイルの機能は、最後の新しいモジュールに必要な最後のエントリ機能を提供することです。

6. 上記のファイルをロードすると、使用できる大きな php が生成されます。必要な機能はすべて用意されており、ajax またはフォームの送信またはテンプレートの表示を待つだけです。

注意すべき点は、実際、これは dz によって元々設計されたプロセスに従っており、システムのアップグレードによる機能に影響を与えることなく dz にシームレスにサインインできることです。落ち着け。専門家は決して満足せず、通常は dz プロセスから離脱します。しかし、破壊力についてはどうでしょうか?それは不明です。ニーズは人によって異なります。

私の提案は、OO といくつかの設計パターンを使用してコードを整理し、ビジネスを合理化することで、スケーラビリティが向上し、再利用率が高くなるということです。もちろん、好きなようにプレイすることもできます。オープンソースです。 (実際、データベースはうまく設計されているようです。私だったら、おそらく設計できないでしょう。専門家は文句を言わないでください。)

上記は、Discuzx2 の内容を含む、Discuzx2 開発の標準的なプロセスを紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。