phpを自分で書く方法、mvcフレームワーク、URL書き換え等ご指導お願いします 共有先: もっと見る -----解決策--------------------------------オープンソース フレームワークをダウンロードしてコードを見てみましょう。まだ知りませんか? ------解決策---------Apache はファイルを完全に見つけて転送します~ ------解決策---------mvc フレームワークと URL 書き換えは直接関係ありません 通常、フレームワークは単一エントリであるため、URL の書き換えが実際に簡単になります ------解決策------- --thinkphp をダウンロードしてソース コードを確認します-----解決策---------Aファイル呼び出し $m=$_GET['m']?ucfirst(strto lower($_GET['m'])):'インデックス'; $mm=$m; $m=$m.'アクション'; $mod=new $m; $method=$_GET['a']?$_GET['a']:'index'; if(method_exists($m,$method)){ $mod->$method(); }その他{ echo 'このメソッドは存在しません'; } 別のファイルルーティングプロセス /* ************************************************* * ******************************/ クラス Prourl { /** * URL ルーティング、PATHINFO 形式に変換 */ 静的関数 parseUrl(){ if (isset($_SERVER['PATH_INFO'])){ //パス情報を取得 $pathinfo =explode('/', trim($_SERVER['PATH_INFO'], "/")); // 制御を取得 $_GET['m'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index'); array_shift($pathinfo) // 配列の先頭のユニットを配列の外に移動します ; // アクションを取得 $_GET['a'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index'); array_shift($pathinfo); // 配列の先頭のユニットを配列の外に移動します for($i=0; $i $_GET[$pathinfo[$i]]=$pathinfo[$i 1]; } }その他{ $_GET["m"]= (!empty($_GET['m']) ? $_GET['m']: 'index'); //デフォルトはインデックスモジュールです $_GET["a"]= (!empty($_GET['a']) ? $_GET['a'] : 'index') //デフォルトはインデックスアクションです if($_SERVER["QUERY_STRING"]){ $m=$_GET["m"]; unset($_GET["m"]); //配列から m を削除します $a=$_GET["a"]; unset($_GET["a"]); //配列から a を削除します $query=http_build_query($_GET); //フォーム 0=foo&1=bar&2=baz&3=boom&cow=milk 形式 //新しい URL を作成します $url=$_SERVER["SCRIPT_NAME"]."/{$m}/{$a}/".str_replace(array("&","="), "/", $query); header("場所:".$url); } } } } 結構です! ! ------解決策---------まだフレームワークを書いていないので、通り過ぎます ------解決策---------1. 単一のエントリメソッドを記述します。 2. ベース コントローラーを介して、パラメーターを通じて対応するコントローラーとメソッド名を制御します。例: c はコントローラー、m はメソッド 3. オブジェクト指向を通じてクラスを自動的にロードします。 4. mvc 開発フレームワークを使用したい場合は、smarty をカーネルとして使用できます 5. データベース ドライバーが必要です。PDO を使用して、最後に他のクラスが継承する保護クラスを作成します。 6. さらに、開発者の便宜のために、一部のコンポーネントとウィジェットをフレームワークに統合する必要があります。通常、ウィジェットはビューによって使用されます。