• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-24) 30次浏览 已收录 0个评论

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

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

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

|---------star|   |------------core:核心类库|   |     |---------------app.php|   |     |---------------model.php|   |     |---------------controller.php|   |     |----------------view.php|   |     |-----------------fun.php|   ||   |-------------common:函数库|   |-------------class:类库|   |--

4本文¥来源gao!%daima.com搞$代*!码$网9

搞代gaodaima码

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

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

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

<?php//定义版本信息define("VERSION","0.1");//控制PHP版本if(phpversion() 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['PATH_INFO'],'/');		$path = explode('/',$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.该版本可以作为我日后的回忆,哈哈。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:二零一四年辛星starphp第一节设置入口文件以及App类

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址