ネイティブ PHP で書かれた独立した PHP フレームワークの場合、単一のエントリ ファイルを使用してパス アクセスを実現します。現時点で遭遇する主な問題は、ファイルの相互包含、次にルーティング分散です。 Web 開発に成熟した PHP フレームワークを使用しない場合、上記の 2 つの問題が非常に厄介になることがわかります。
問題解決策:
1. ファイルの内容
php にファイルをインクルードするには、require と include の 2 つの方法があります。メソッド require を使用してファイルをインクルードするときにエラーが発生すると、重大なエラーが報告され、PHP スクリプトの実行が停止します。 include を使用してファイルをインクルードするときにエラーが発生すると、警告が表示されますが、PHP スクリプトは続行されます。実行します。同時に、両方のメソッドに対応する xxx_once メソッドが含まれているため、「クラス宣言」の問題を回避できます。したがって、一般にファイルのインクルードを使用する場合は、include_once を使用してファイルをインクルードするようにします。
同時に、ファイルに含まれるパスの問題については、グローバル変数を設定する方法を使用して、エントリ ファイルの絶対パスに基づいて他のパス ファイルを見つけることができます。 php.ini の include_path パスを変更することは、もちろん別の方法です。ファイルを含めるには、require と include を使用します。相対パスの場合は、php.ini 設定ファイルの include_path 設定に従って最初に検索されます。
2. ルート配布
PHP ベースのルート配布は、基本的に、URL 内のパスを使用して対応するコントロール クラスと照合し、その中のメソッドを呼び出します。関連する操作。
何も言わずに書いたコード:
<?php /** * Author:helen * CreateTime: 2016/07/27 10:26 * Description: */ // 权限控制 include_once './auth.php'; // 应用入口文件 date_default_timezone_set("Asia/Shanghai"); header('Content-type: text/html;charset=utf-8'); // 项目根路径 define('BASEPATH', dirname(__FILE__)); // 调试模式 define('APP_DEBUG', True); // 引入配置文件 include_once BASEPATH . '/config/config.php'; // 路由控制 $router = include_once BASEPATH . '/config/router.php'; if ($_SERVER['HTTP_HOST'] !== 'xxx.com') { var_dump('当前host不被允许'); } else { $request_path = str_replace('/index.php', '', $_SERVER['PHP_SELF']); $request_query = getCurrentQuery(); if (array_key_exists($request_path, $router)) { $module_file = BASEPATH . $router[$request_path]['file_name']; $class_name = $router[$request_path]['class_name']; $method_name = $router[$request_path]['method_name']; if (file_exists($module_file)) { include $module_file; $obj_module = new $class_name(); if (!method_exists($obj_module, $method_name)) { die("要调用的方法不存在"); } else { if (is_callable(array($obj_module, $method_name))) { $obj_module->$method_name($request_query, $_POST); } } } else { die("定义的模块不存在"); } } else { echo '页面不存在'; } }
上記の方法を使うと、PHPの基本フレームワークのルーティング分散が実現できます。
推奨チュートリアル: 「PHP チュートリアル 」
以上がPHPは単純にルーティングを実装する Route関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。