この記事では、php7 ベースの Beauty Framework フレームワーク (コード付き) を紹介します。一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです
コアフレームワークのリンクは、最初のリクエストのルーティング解決からコントローラーの配布、およびモデルのデータ対話から応答までです。
他のフレームワークを使って実装すると非常に面倒で、統合された内容が多すぎて不要なものも多いため、他のフレームワークをベースにしたシンプルで実用的なフレームワークを書きました。
ルーティングから始めましょう:
1) ルーティング
ルーティング プロトコルのルールは、正規表現の一致を使用して、異なるリンクを異なるコントローラに配布します。また、匿名の呼び出しもサポートしています。関数
// 第一种,使用匿名函数 App::router()->get('/', function () { echo "Beauty Framework."; });
// 第二种,使用url分发到控制器 App::router()->post('/user/info/[0-9]+(/[0-9]+)?', 'App\Controllers\UserController@getUserInfo');
に実装されているコア コード: (非常に単純ですか?)
if (is_string($lostrcallable) && preg_match('!^([\a-zA-Z0-9]+)\@([a-zA-Z0-9]+)$!', $lostrcallable, $matches)) { $class = $matches[1]; $method = $matches[2]; $callable = function () use ($class, $method) { static $obj = null; if ($obj === null) { $obj = new $class; } return call_user_func_array(array($obj, $method), func_get_args()); }; }
2) コントローラー
お持ちでない場合は、どこを指していてもリクエストは処理できますが、MVC では、Controller に記述することが推奨されています。誰もがそう思っているので、そのまま実行してください。
3) モデル層
Dao クラスは、データベース クエリ操作のためにここに直接統合されています。現在、多くの人が MySQL を使用しているため、MySQL の通常の操作が結合されて実装されています。データベースのネイティブ操作は多くのインジェクションやその他の問題を引き起こすため、直接 Qquery を行う方法はサポートされていません。
4) DAO 層
読み取りと書き込みを分離する必要がある場合が多いためですが、それを実現するために MySQL Proxy を使用するのは面倒すぎるため、サポートを実装しました異なる SQL に基づくデータベース クエリの場合、マスター データベースとスレーブ データベースがそれぞれ使用されます。 ###どうやってするの?
/** * 获取查询内容,以数组形式返回,数据内为array。 * * @access public * @param integer|array $limit Array to define SQL limit in format Array ($count, $offset) * or only $count * * @return mixed Array of Clients */ protected function get($limit = null) { $this->dbClient->setQueryChannel($this->channel); $results = $this->dbClient->arrayBuilder()->get($this->dbTable, $limit, $this->fields); $this->_reset(); if ($this->dbClient->count == 0) { return []; } return $results; }
5) 構成クラス In 開発環境と本番環境では異なる構成環境が使用されますが、フレームワーク内に .env 環境を作成して切り替えることができます。開発と運用は構成で定期的に設定できます。どの環境が使用されるかは .env
; This is a environment configuration file environment=developmentで設定されます。もちろん、構成ファイルに直接設定できる公開構成情報もいくつかあります。あらゆる環境で使用できます。
// 支持使用.连接访问配置项,访问的是config/app.php中的config key \Beauty\Core\App::config()->get("app.config");
6) リクエストレスポンスViewは必要なく、jsonデータのみを返せばよいため、Headerに直接text/jsonを記述します。 = =
Zend Framework Smarty 拡張機能の実装方法、zendsmarty
以上がphp7をベースに実装されたBeauty Framework(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。