recherche
Maisondéveloppement back-endtutoriel php二零一四年辛星starphp第一节设置入口文件以及App类

2014年辛星starphp第一节设置入口文件以及App类

     

*********************本节目标****************

1.首先是我们的框架大致布局,我们即将写成的这个框架,它的入口文件统一为star.php,它需要做的一些事,比如加载配置项,日志文件什么的日后再说,首先确定一下它的目录结构,它的目录结构是如下的样子:

|---------star|   |------------core:核心类库|   |     |---------------app.php|   |     |---------------model.php|   |     |---------------controller.php|   |     |----------------view.php|   |     |-----------------fun.php|   ||   |-------------common:函数库|   |-------------class:类库|   |-------------extends:其他类库|   |--------------star.php||-----------app它的文件目录为|   |------------遵循模块/控制器/方法的格式|   |------------index.php||------------adimin|
2.我们今天先写这个star.php文件,它是统一的入口文件,首先我们必须定义一个index.php,它的文件内容如下:

<?php //定义它是从首页进入的define(&#39;INDEX&#39;,True);//包含该核心文件define(&#39;__ROOT__&#39;,__DIR__);include __ROOT__.&#39;/star/star.php&#39;;

3.然后我们书写star.php的内容,它能够引导找到App类,并且调用App类的run方法来使程序运行下去,它的代码:

<?php //定义版本信息define("VERSION","0.1");//控制PHP版本if(phpversion() <&#39;5.3&#39;){	exit("版本太低不支持");} //表示路径分隔符define("DS",DIRECTORY_SEPARATOR);//这个STAR表示我们的star目录if(!defined("STAR")){define("STAR",__DIR__);}//定义应用程序目录,if(! defined("APP")){define("APP",__ROOT__.DS."app");}if(! defined("CORE")){define("CORE",STAR.DS."core");}//导入应用程序控制文件  include STAR.DS."core".DS."app.php";//导入核心文件include CORE.DS."fun.php";$app = new  App();$app->run();
4.然后我们写这个App类,它应该能够完成对URL的解析,这里我们还没有设置配置文件,因此我们的URL统一使用PATHINFO模式,而且路径分隔符统一用斜线,而且我们的url的文件名的后部分是按照”模块/控制器/方法/参数1/值1/参数2/值2...."的方式去写的,因此,我们的app.php文件如下:

<?php /***该类用于统一处理所有的信息**/if(!defined("STAR")) die("系统错误");include STAR.DS."core".DS."controller.php";class App{	//模块名	private $module = "";	//控制器	private $controller = "";	//方法名	private $method = "";	//参数名	private $param = array();	//参数个数	private $paramlength = 0;	/**	*用于解析控制器和方法	*	*/	public function __construct(){		//默认使用/来解析url		$path  = trim($_SERVER[&#39;PATH_INFO&#39;],&#39;/&#39;);		$path = explode(&#39;/&#39;,$path);		var_dump($path);		$paramlength =(count($path) - 3)/2;		var_dump($paramlength);		$this->paramlength = $paramlength;		$module  = array_shift($path);//模块名		$controller = array_shift($path);//控制器名		$method = array_shift($path);//方法名		var_dump($path);		for($i = 0;$i param = $param;		if($module ==""){$module = "index";}		if($controller == ""){$controller = "Index";}		if($method == ""){$method = "index";}		$this->module = $module;		$this->controller = $controller;		$this->method = $method;		//spl_autoload_register($this->loadcore);		//自动根据解析的路由来执行	}	/**	*用于运行方法	*	*/	public function run(){		$controller = $this->controller;		$module = $this->module;		$dir = APP.DS.$module.DS."controller".DS."$controller"."Controller.php";		include "$dir";		$controllerclass = $controller."Controller";		$class = new $controllerclass();		$method = $this->method;		$param = $this->param;		$length = $this->paramlength;		if(is_int($length) && ($length >= 1)){			$class->$method($param);		}else{			$class->$method();		}			}	/**	*	*	*/	}
5.我们还需要在core文件夹的fun.php文件中添加一些代码,它有一个star_arr_safe函数用来对数组进行过滤,来防止非法注入,它的内容如下:

<?php /***用于过滤用户输入信息的函数*它主要是防止sql注入*也需要防范html实体*/function star_arr_safe($array){	if(is_array($array)){		$count = count($array);		for($i = 0;$i< $count;$i ++){			$array[$i] = htmlspecialchars($array[$i]);			$array[$i] = addslashes($array[$i]);		}	}	return $array;	}

6.我们的Controller还没有实际的意义,但是为了能够起到形式上的作用,我们定义如下:

<?php /***该类用于解析url并且根据url来执行相关的方法**/if(!defined("STAR")) die("系统错误");class Controller{	}
7.截至目前,我们先写这些代码。



*****************辅助工作***************

1.为了测试运行,我们在app目录下的controller目录下新建了一个MyController.php,它有一个index方法,我们这里给定如下:

<?phpif (!defined("STAR")) exit("Not Allowed");class MyController extends Controller{	public function index($arr){		echo "hello world";		var_dump($arr);			}}
2.该版本目前运行正常,版本号记为0.0.1,代码我上传到csdn的下载的地方:
点击打开链接  ,当然是面积分下载的。

3.该版本可以作为我日后的回忆,哈哈。


Déclaration
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
Quels sont les problèmes courants qui peuvent faire échouer les sessions de PHP?Quels sont les problèmes courants qui peuvent faire échouer les sessions de PHP?Apr 25, 2025 am 12:16 AM

Les raisons de la défaillance de la phpsession comprennent les erreurs de configuration, les problèmes de cookies et l'expiration de session. 1. Erreur de configuration: vérifiez et définissez la session correcte.save_path. 2.Cookie Problème: assurez-vous que le cookie est correctement réglé. 3.Session Expire: Ajustez la valeur de session.gc_maxlifetime pour prolonger le temps de session.

Comment déboguez-vous les problèmes liés à la session dans PHP?Comment déboguez-vous les problèmes liés à la session dans PHP?Apr 25, 2025 am 12:12 AM

Les méthodes pour déboguer les problèmes de session en PHP incluent: 1. Vérifiez si la session est démarrée correctement; 2. Vérifiez la livraison de l'ID de session; 3. Vérifiez le stockage et la lecture des données de session; 4. Vérifiez la configuration du serveur. En sortissant l'ID de session et les données, en affichant le contenu du fichier de session, etc., vous pouvez diagnostiquer et résoudre efficacement les problèmes liés à la session.

Que se passe-t-il si Session_Start () est appelé plusieurs fois?Que se passe-t-il si Session_Start () est appelé plusieurs fois?Apr 25, 2025 am 12:06 AM

Plusieurs appels vers session_start () se traduiront par des messages d'avertissement et d'éventuels remplacements de données. 1) PHP émettra un avertissement, ce qui incite la session à démarrer. 2) Il peut provoquer un écrasement inattendu des données de session. 3) Utilisez session_status () pour vérifier l'état de la session pour éviter les appels répétés.

Comment configurez-vous la durée de vie de la session en PHP?Comment configurez-vous la durée de vie de la session en PHP?Apr 25, 2025 am 12:05 AM

La configuration du cycle de vie de session dans PHP peut être réalisée en définissant session.gc_maxlifetime et session.cookie_lifetime. 1) Session.gc_maxlifetime contrôle le temps de survie des données de session côté serveur, 2) Session.cookie_lifetime contrôle le cycle de vie des cookies des clients. Lorsqu'il est réglé sur 0, le cookie expire lorsque le navigateur est fermé.

Quels sont les avantages de l'utilisation d'une base de données pour stocker des sessions?Quels sont les avantages de l'utilisation d'une base de données pour stocker des sessions?Apr 24, 2025 am 12:16 AM

Les principaux avantages de l'utilisation des sessions de stockage de la base de données incluent la persistance, l'évolutivité et la sécurité. 1. Persistance: Même si le serveur redémarre, les données de session peuvent rester inchangées. 2. Évolutivité: applicable aux systèmes distribués, garantissant que les données de session sont synchronisées entre plusieurs serveurs. 3. Sécurité: La base de données fournit un stockage crypté pour protéger les informations sensibles.

Comment implémentez-vous la gestion des sessions personnalisées dans PHP?Comment implémentez-vous la gestion des sessions personnalisées dans PHP?Apr 24, 2025 am 12:16 AM

L'implémentation de traitement personnalisé de session dans PHP peut être effectué en implémentant l'interface SessionHandlerInterface. Les étapes spécifiques incluent: 1) la création d'une classe qui implémente SessionHandlerInterface, telles que CustomSessionHandler; 2) réécrire des méthodes dans l'interface (telles que l'ouverture, la fermeture, la lecture, l'écriture, la détruire, GC) pour définir le cycle de vie et la méthode de stockage des données de session; 3) Enregistrez un processeur de session personnalisé dans un script PHP et démarrez la session. Cela permet de stocker des données dans des supports tels que MySQL et Redis pour améliorer les performances, la sécurité et l'évolutivité.

Qu'est-ce qu'un identifiant de session?Qu'est-ce qu'un identifiant de session?Apr 24, 2025 am 12:13 AM

SessionID est un mécanisme utilisé dans les applications Web pour suivre l'état de la session utilisateur. 1. Il s'agit d'une chaîne générée aléatoire utilisée pour maintenir les informations d'identité de l'utilisateur lors de plusieurs interactions entre l'utilisateur et le serveur. 2. Le serveur génère et l'envoie au client via des cookies ou des paramètres d'URL pour aider à identifier et à associer ces demandes dans plusieurs demandes de l'utilisateur. 3. La génération utilise généralement des algorithmes aléatoires pour assurer l'unicité et l'imprévisibilité. 4. Dans le développement réel, les bases de données en mémoire telles que Redis peuvent être utilisées pour stocker les données de session pour améliorer les performances et la sécurité.

Comment gérez-vous les sessions dans un environnement sans état (par exemple, API)?Comment gérez-vous les sessions dans un environnement sans état (par exemple, API)?Apr 24, 2025 am 12:12 AM

La gestion des séances dans des environnements sans état tels que les API peut être réalisée en utilisant JWT ou des cookies. 1. JWT convient à l'état sans état et à l'évolutivité, mais il est de grande taille en ce qui concerne les mégadonnées. 2.La cookies est plus traditionnel et facile à mettre en œuvre, mais ils doivent être configurés avec prudence pour assurer la sécurité.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code