現在私はPHP=を使用してサーバークライアントアプリケーションを開発しています。そのため、実装プロセスをガイドするリファレンスアーキテクチャを設計しています。
私は新しい平均スタックフォルダー structure と、それを行うコンポーネント/モジュールの方法が本当に好きですが、ここでも多くの苦労をしています。
例として:
/<project-name>
index.php
/static
/css
/main.css
/js
/user
userFunctions.js
/bower_components
/jquery
/chart
/fontawesome
/template-engine
...
/scripts
/debug.php
/checkCodingStyle.php
/modules
/user
userDetailsController.php
userListController.php
userDetailsView.php
userListView.php
user.php
userDao.php
/utils
/db
mysql.php
/log
log.php
/lib
/tests
userUnitTest.php
「user」と呼ばれる1つのモジュールがあり、データモデルuser.phpに基づいて、2つの異なるビューとコントローラーを備えています。データアクセスオブジェクトuserDao.phpを呼び出すデータベースからモデルにアクセスできます。
MVC + Daoを使用すると、アプリのコンテンツとロジックを個別に分離でき、モジュール間の疎結合と各モジュール内の強力な結合を可能にします。
だが:
モデルのユーザーは、他のモジュールでも必要になるかもしれません。モジュールイベントがあるとしましょう。データモデルuser.phpを再利用したいと思います。ユーザー選択リストを使用するといいでしょう。 userListView.php。
それ、どうやったら出来るの? userListView.phpには必要なものがすべて含まれていますが、userListController.php。
別のモジュールからデータモデルを呼び出して別のモジュールコントローラーで再利用するのは間違っていますか?
1つのモジュールが呼び出すことができるサービスのように、モジュール間のインターフェースを構築するより良い方法はありますか?
あなたが経験する苦労のほとんどは、フレームワークを使用することで簡単に回避できると思います。したがって、プロジェクトで必要最小限のPHPを使用するのでない限り、フレームワークを使用してください。
オープンソースフレームワークを作成する人々は、この種の問題を解決するために時間を費やしているので、ファイルの編成方法の変更に費やすのではなく、楽しいことに集中できます。
PHPの場合、Symfonyプロジェクトをご覧になることをお勧めします:
https://symfony.com/six-good-reasons
多くのプロジェクトがsymfonyに基づいているか、またはそのコンポーネントを使用しているため、学ぶことができる大きなコードベースがあります。
ビジネスロジックの整理に関する情報を含むベストプラクティスのリストもあります。
https://symfony.com/doc/current/best_practices/index.html
フレームワークにまだ懐疑的で、フレームワークを使用せずに続行したい場合は、次の一連の記事もお勧めします。
独自のPHPフレームワークを作成する
http://symfony.com/doc/current/create_framework/index.html
お役に立てれば!