ホームページ  >  記事  >  バックエンド開発  >  php7をベースに実装されたBeauty Framework(コード付き)

php7をベースに実装されたBeauty Framework(コード付き)

不言
不言オリジナル
2018-08-01 13:39:191842ブラウズ

この記事では、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 に基づくデータベース クエリの場合、マスター データベースとスレーブ データベースがそれぞれ使用されます。 ###どうやってするの?

未使用のクエリ操作に応じて直接分割されており、選択クエリ操作は読み取りデータベースに直接割り当てられ、挿入、更新、および削除は書き込みデータベースに直接割り当てられます。 onMasterConnection/onSlaveConnection を使用して直接指定することもできます。

Select がどのように行うかを見てください。この部分は実装ロジックです:

    /**
     * 获取查询内容,以数组形式返回,数据内为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を記述します。 = =

その他の実装

  • memcache と redis は、一貫したハッシュを使用して異なるインスタンスにアクセスします。

  • validator 検証クラス

特定のコードは github https://github.com/tigerk/Beauty

にあります。おすすめ関連記事:

Zend Framework Smarty 拡張機能の実装方法、zendsmarty

Zend Framework ルーティング機構のコード解析、zendframework#

以上がphp7をベースに実装されたBeauty Framework(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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