Heim > Backend-Entwicklung > PHP-Tutorial > Eine einfache Implementierung eines PHP-Frameworks, das nur eine einfache Routing-Schicht implementiert

Eine einfache Implementierung eines PHP-Frameworks, das nur eine einfache Routing-Schicht implementiert

藏色散人
Freigeben: 2023-04-09 17:28:02
nach vorne
3869 Leute haben es durchsucht

Empfohlen: „PHP-Video-Tutorial

Schauen Sie sich zuerst das vorhandene Dateiverzeichnis an

DOCUMENT_ROOR ist das /home/www-Verzeichnis

Dann schauen Sie sich den Inhalt der Eintragsdatei an

<?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;
?>
Nach dem Login kopieren

Dann erstellen Ein einfacher Controller user.php wird im Verzeichnis applicaiton/controllers/ abgelegt. Der spezifische Inhalt lautet wie folgt:

<?php
class User {
    
    function __construct(){
        
    }
    public function index($name=&#39;&#39;)
    {
    	echo &#39;hello,&#39;.$name.&#39;,lucky,you are arrive here!&#39;;
    }
}
Nach dem Login kopieren

Testen Sie abschließend einen korrekten Controller-Sprung und einen falschen Controller-Sprung

Testen Sie zunächst den korrekten Prozess: http :/ /192.168.1.99/user/index/xiaoming

Ausgabeinhalt:

classname=User,action=index,params={"2":"xiaoming"}
 hello,xiaoming,lucky,you are arrive here!
Nach dem Login kopieren

Testen Sie den nicht vorhandenen Controller erneut, 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
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEine einfache Implementierung eines PHP-Frameworks, das nur eine einfache Routing-Schicht implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage