これは、中小規模のチーム開発のためのフレームワークです
シンプルな個人ブログbybzmt/blog.php
このフレームワークに基づいた個人的なブログbybzmt/blog.phpは非常に強力なパフォーマンスを持っています
| モデル | 静的ファイル | ホーム(2つのブログ) | ホーム(10ブログ) |
|---|---|---|---|
| FPM | 4705 | 1507 | 1237 |
| スウール | 26607 | 3276 | 2084 |
├── assets 资源目录(如:字体文件等)
├── config
│ ├── dev 开发环境配置
│ ├── product 生产环境配置
├── index.php 项目入口
├── library 其它与composer不兼容的库
├── src
│ ├── Admin 管理后台
│ ├── Api app接口端
│ ├── Backend 内部(内网)接口
│ ├── Common 公共代码目录
│ ├── Console 控制台
│ ├── Wap 手机Web端
│ └── Web Web端
├── static
│ ├── admin 后台静态文件
│ └── web Web端静态文件
├── tests 单元测试目录
├── var 可读写目录(如:模板缓存等)
└── vendor composer库
Swooleは常駐メモリモードであるため、グローバル変数のライフサイクルはアプリケーションレベルであり、FPMモードとは異なり、リクエストレベルのみです。グローバル変数は異なる要求間で維持できます。そのため、$ _getや$ _POSTなどの元の方法は使用できません。このフレームワークは、各要求のコンテキストオブジェクトをインスタンス化し、現在の要求に関連するすべてのデータをコンテキストオブジェクトに保存します。
コンテキストオブジェクトは、階層でのコンポーネントの読み込みと交換機能も担当します。
上記のブログのように:
コンポーネントを初期化するとき、コンテキストオブジェクトは最初に名前空間の対応するコンポーネントを探します。発見されていない場合、親コンテキストは初期化されます。これにより、必要なコンポーネントを簡単に拡張および交換できます。
API:
リクエストオブジェクトは、直接使用されるswoole_http_requestです
応答オブジェクトは、swoole_http_responseも直接使用します
FPMモードでは、フレームワークが互換性レイヤーを実装して、Swooleと同じAPIを維持する
このフレームワークは、コンテキストオブジェクトに関連するすべてのオブジェクトをコンポーネントとして実装します。これは、主に高速インスタンス化関数を提供するため、コンテキストオブジェクトの繰り返し伝送を必要としません。
さらに、コンポーネントには、任意のコンポーネントで使用する便利な方法もいくつかあります。
手すりはオープンマッピングを採用していませんが、比較的きれいになるという利点がある登録ルーティングを使用します。
ルーティングプロジェクトは、bybzmt/router.phpにあります
気に入らない場合は、好きなライブラリに置き換えることができ、フレームワークのコンポーネントを簡単に交換することが非常に簡単です。
フレームワークでは、ドメインモデルパターンを使用することをお勧めします。サービス、テーブル、行(ドメイン)構造を使用します
データ表示作業は、サービス、テーブル、および行に書き込まれるべきではないことに注意してください。最も基本的なデータを提供する責任のみが責任を負います。対応するデータ構造をページおよびAPI要件に従って整理することは、コントローラーとビューに実装する必要があります。
データベースは、テーブル機能を提供する基本的な関数とテーブル関数を提供するテーブルプリットクラスを提供するテーブルクラスに分割されます。また、キャッシュ機能を提供するTableRowCache特性もあります。ユーザーのテーブルは、テーブルまたはTablesplitクラスから継承する必要があり、キャッシュが必要な場合は導入できます。
テーブルとキャッシュの両方が、テーブルクラスのget/gets/insert/update/削除/削除のみをサポートすることに注意してください。 SQLを使用してデータ操作を直接実行する場合、関連するキャッシュまたはテーブル機能を手動で維持する必要があります。
フレームワークは、Lazyrowロード方法を提供します。インスタンス化すると、IDのみを記録し、属性がアクセスされるまでバッチにロードしようとします。
フレームワークはいくつかの一般的な機能を提供し、使用するのに便利です
このキャッシュは、上の表のキャッシュとは何の関係もありません。ユーザーが維持したキャッシュを指します。重要な競合を避けるために、さまざまな種類のキャッシュをさまざまなクラスで管理できるようにしてください。
フレームワークはテンプレート機能を提供しておらず、既存のサードパーティテンプレートプログラムを直接作成することをお勧めします。 (例:小枝)
フレームワークの機能は、すべての環境に適応したくないため、ケースの80%で利用できる必要があります。特別な状況は、特定のプロジェクトで特別に処理できます。
フレームワークには多くのコードがないため、すべてのコードを可能な限り読み取るようにしてください。