ホームページ  >  記事  >  バックエンド開発  >  PHPのMVCフレームワークのルーティング機能を実装する方法。

PHPのMVCフレームワークのルーティング機能を実装する方法。

小云云
小云云オリジナル
2017-11-13 14:01:132495ブラウズ

現在、PHP は広く使用されているプログラミング言語です。PHP 開発を行う場合、PHP フレームワークは、柔軟な開発方法、MVC レイヤーの分離、ビジネスの分離などを提供してくれます。私たちの開発はより速く、より便利になります。ただし、多くの人はフレームワークの使用方法だけを知っていますが、フレームワークの内部がどのように実装されているかを理解していません。これはプログラミング能力の向上には役に立ちません。そこでこの記事では、より単純な機能、つまり一般的なシングルエントリーボックスMVCフレームワークのルーティング機能の実装方法から説明していきます。ルートはすべて次のような構造になっています: localhost/MVC/index.php/classname/functionname/var1/var2。ここでのindex.phpは通常エントリーファイルと呼ばれます。サーバーの場合、ここでアクセスするのは、index.php の後に呼び出されるコントローラーとその中のメソッドのみであり、値の転送も PHP レベルに基づいてフレームワーク内に実装されます。次に、MVC フレームワークのルーティング機能を簡単に実装します。

1. まず、MVC ファイル構造を確立します

PHPのMVCフレームワークのルーティング機能を実装する方法。

それでは、実際に試して、コントローラー内のファイルにアクセスする方法を見てみましょう。

index.phpに以下の内容を入力してください:

<?php  
/**  
 * MVC路由功能简单实现 
 * @desc 简单实现MVC路由功能 
 * $Author: Zhihua_W  
 */     
//打印出所有的服务器变量  
print_r($_SERVER);   
?>

次に、アクセスアドレスを入力して試してみます。ここではローカル環境を使用しており、アクセスするアドレスは localhost/MVC/index.php/class/function/var1 です。以下に 2 つの最も重要な変数を投稿します:

[REQUEST_URI] => /MVC/index.php/class/function/var1  
[SCRIPT_NAME] => /MVC/index.php

2. Index.php ファイルの内容

<?php  
/** 
 * MVC路由功能简单实现 
 * @desc 简单实现MVC路由功能 
 * $Author: Zhihua_W 
 */  
//定义application路径     
define(&#39;APPPATH&#39;, trim(__DIR__ . &#39;/&#39;));  
//获得请求地址     
$root = $_SERVER[&#39;SCRIPT_NAME&#39;];  
$request = $_SERVER[&#39;REQUEST_URI&#39;];  
$URI = array();  
//获得index.php 后面的地址     
$url = trim(str_replace($root, &#39;&#39;, $request), &#39;/&#39;);  
//如果为空,则是访问根地址     
if (empty($url)) {  
    //默认控制器和默认方法  
    $class = &#39;index&#39;;  
    $func = &#39;welcome&#39;;  
} else {  
    $URI = explode(&#39;/&#39;, $url);  
  
    //如果function为空 则默认访问index     
    if (count($URI) < 2) {  
        $class = $URI[0];  
        $func = &#39;index&#39;;  
    } else {  
        $class = $URI[0];  
        $func = $URI[1];  
    }  
}  
 //把class加载进来     
include(APPPATH . &#39;/&#39; . &#39;application/controllers /&#39; . $class . &#39;.php&#39;);  
  
//实例化->将控制器首字母大写    
$obj = ucfirst($class);  
  
call_user_func_array(  
//调用内部function     
    array($obj, $func),  
    //传递参数     
    array_slice($URI, 2)  
);  
?>

3. 次の 2 つのファイル (index.php、hello.php) を application/controllers に追加します。 ①index.php

<?php
 * MVC路由功能简单实现 
 * @desc 简单实现MVC路由功能 
 * $Author: Zhihua_W 
 */  
class Index  
{  
    function welcome()  
    {  
        # code...  
        echo "default covtroller!";  
    }  
}  
?>

②hello.php

<?php
/** 
 * MVC路由功能简单实现 
 * @desc 简单实现MVC路由功能 
 * $Author: Zhihua_W 
 */  
class Hello{  
    public function index(){  
        echo "hello world!";  
    }  
    public function name($name){  
        echo "hello ".$name;  
    }  
}  
?>  ] view plain copy
<?php  
/**
4.テスト

テストしてアクセスできるか確認します。上記のルーティング構造によると。試してみることができます。テストの結果、アクセスは正常であり、hello クラス内の name メソッドが正しく呼び出され、パラメーター jack が渡されることがわかります。関数名を再度入力しないで、インデックスがデフォルトで呼び出せるかどうかを確認してください。答えは「はい」です。最後の方法は、ルート アドレスにアクセスし、それがデフォルトのコントローラーにも正しくマッピングされていることを確認することです。 (テスト結果の写真はスクリーンショットなしで掲載しています。)

以上で、簡単なMVCルーティング関数が完成しました。

関連する推奨事項:

MVC フレームワークとは

PHP での MVC プログラミングを理解する - MVC フレームワークの概要

PHP を使用して独自の MVC フレームワークを構築する

以上がPHPのMVCフレームワークのルーティング機能を実装する方法。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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