Maison > développement back-end > tutoriel php > Une implémentation simple d'un framework php, implémentant uniquement une simple couche de routage

Une implémentation simple d'un framework php, implémentant uniquement une simple couche de routage

藏色散人
Libérer: 2023-04-09 17:28:02
avant
3875 Les gens l'ont consulté

Recommandé : "Tutoriel vidéo PHP"

Premier coup d'oeil au répertoire de fichiers existant

DOCUMENT_ROOR est / répertoire home/www

Regardez ensuite le contenu du fichier d'entrée

<?php
	$controll_action = $_GET[&#39;_ca_&#39;];
	$params  = explode(&#39;/&#39;,$controll_action);
	$params_count = count($params);

	$otherParams = $params;
	if($params_count>1) {
		$controller = $params[0];
		$action  = $params[1];
		unset($params[0]);
		unset($params[1]);
	}else if($params_count==1) {
		$controller = $params[0];
		$action = &#39;index&#39;;
		unset($params[0]);
	}

	$filename = strtolower($controller).&#39;.php&#39;;
	$controller_path = $_SERVER[&#39;DOCUMENT_ROOT&#39;].&#39;/application/controllers/&#39;;

	if(!file_exists($controller_path.$filename)) {
		throw new Exception(&#39;controller &#39;.$filename.&#39; is not exists!&#39;);
		return;
	}
	include($controller_path.$filename);

	$classname = ucfirst($controller);
	if(!class_exists($classname)) {
		throw new Excpetion(&#39;class &#39;.$classname.&#39; is not exists!&#39;);
	}
	$reflecObj = new ReflectionClass($classname);
	if(!$reflecObj->hasMethod($action)){
		throw new Exception(&#39;method &#39;.$action.&#39; is not exists!&#39;);
	}

	$currentObj = new $classname();
	echo "classname=$classname,action=$action,params=".json_encode($params)."<br/>";
	call_user_func_array([$currentObj,$action],$params);
	return;
?>
Copier après la connexion

Puis créez un simple contrôleur user.php et mettez-le dans le répertoire applicaiton/controllers/ avec le spécifique contenu Comme suit :

<?php
class User {
    
    function __construct(){
        
    }
    public function index($name=&#39;&#39;)
    {
    	echo &#39;hello,&#39;.$name.&#39;,lucky,you are arrive here!&#39;;
    }
}
Copier après la connexion

Testez enfin un saut de contrôleur correct et un saut de contrôleur incorrect

Testez d'abord le processus correct : http://192.168.1.99/user /index/xiaoming

Contenu de sortie :

classname=User,action=index,params={"2":"xiaoming"}
 hello,xiaoming,lucky,you are arrive here!
Copier après la connexion

Testez à nouveau le contrôleur inexistant, http://192.168.1.99/account/index/xiaoming

Fatal error: Uncaught exception &#39;Exception&#39; with message &#39;controller acount.php is not exists!&#39; in /home/www/webroot/index.php:25Stack trace:#0 {main} thrown in 
/home/www/webroot/index.php on line 25
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal