php7.0的mvc项目,PHP之MVC项目实战

本文主要包括以下内容

类文件自动加载 路径管理 页面跳转 注册自动加载方法 配置文件系统 cookie session

类文件自动加载

在PHP中使用别的类时,需要载入类文件,如果类很多的话,需要重复写很多代码,所以利用__autoload魔法方法实现自动加载

/**

* 自动加载函数

*

* @param $class_name string 需要的类名

*/

function __autoload($class_name) {

// echo $class_name, ' ';

//特例

$map = array(

'MySQLDB' => FRAME_DIR . 'MySQLDB.class.php',

'Model' => FRAME_DIR . 'Model.class.php'

);//该数组,将所有的有限的特例,类与类名的映射,完成一个列表

//判断当前所需要加载的类是否是特例类

if( isset($map[$class_name])) {

//存在该元素,是特例

//直接载入

require $map[$class_name];

}

//规律

elseif (substr($class_name, -10) == 'Controller') {

//控制器

require CURR_CONT_DIR . $class_name . '.class.php';

} elseif (substr($class_name, -5) == 'Model') {

//模型

require MODEL_DIR . $class_name . '.class.php';

}

}

路径管理

项目中,使用常量的形式管理路径!

使用绝对路径!

尽量自动获得!

如果目录之前进行拼凑,一定会使用到目录分隔符!(PATH_SEPARATOR,路径分隔符) ,不同的操作系统对目录分隔符的支持是不同的!

windows 支持 \(反斜杠) 和 /(斜杠),默认是反斜杠\。

linux 支持 / (斜杠)

因此程序中多见 /斜杠!

除此,还有一个更好的方法:

利用 预定义 常量:DIRECTORY_SEPARATOR,目录分隔符!

//管理路径常量

define('DS', DIRECTORY_SEPARATOR);//简化目录分隔符名称长度!

define('ROOT_DIR', dirname(__FILE__) . DS);//根

define('APP_DIR', ROOT_DIR . 'app' . DS);//应用程序

define('CONT_DIR', APP_DIR . 'controller' . DS);//控制器

define('CURR_CONT_DIR', CONT_DIR . PLATFORM . DS);//当前控制器

define('VIEW_DIR', APP_DIR . 'view' . DS);//视图

define('CURR_VIEW_DIR', VIEW_DIR . PLATFORM . DS);//当前视图

define('MODEL_DIR', APP_DIR . 'model' . DS);//模型路径

define('FRAME_DIR', ROOT_DIR . 'framework' . DS);//框架路径

页面跳转

header(‘Location: url’);

优势:在于立即跳转!

劣势:没有办法在跳转前给出提示!

header功能是,发送响应头信息!相应头信息,是相应信息的一部分!通知浏览器应该做哪些事情的部分!但是要求,相应头信息,要先于响应主体(相应信息的其他部分)先被发送到浏览器!

因此,无论如何也是看不到echo的提示:

因此,编程上建议在使用header函数时,前面不应该有任何的输出!包含html输出和phpecho输出!

location.href=’url’,javascript

提示是,样式不易控!(可以用弹出层)

但是,js的支持,需要浏览器支持才可以!

meta:Refresh

refresh 是刷新的意思,可以提供一个秒数,刷新的间隔!

有需要当前页面执行结束后才会刷新,因此容易给出提示,包括提示的样式!

因此项目中典型的提示跳转都由 refresh完成!

格外注意:

跳转的代码执行结束后,脚本是没有停止的!

因此,跳转的代码后边强制脚本停止!

注册自动加载方法

利用 系统函数:

spl_autoload_registser()

如果需要注册的是一个函数:直接提供函数名即可

如果是方法的话:需要给出类或者对象(是否是静态) 和 方法名!

此时需要一个数组,使用两个元素,分别表示

array(类名或对象,方法名);

spl_autoload_register(array('Framework', 'itcast_autoload'));

配置文件系统

一,增加一个文件,保存配置信息

二,项目运行时,将配置文件载入,就可以使用配置信息

增加配置文件

在app目录增加一个config子目录,用于管理配置文件:

array(

'host'=>'127.0.0.1',

'port'=>'3306',

'user'=>'root',

'pass'=>'root',

'charset'=>'utf8',

'dbname'=>'itcast_shop',

),//数据库组

'app' => array(),//应用程序项目组

'back' => array(),//后台

'front' => array(),

);

载入配置文件

增加一个框架级别的基础操作,载入配置信息!

在framework/Framework.class.php

增一个方法,在run方法中执行即可!

相关报道:

print?//字符串转化为xml function toXmlDom(source){ var xmlDoc = null; if (window.ActiveXObject) { var ARR_ACTIVEX = [MSXML4.DOMDocument,MSXML3.DOMDocument,MSXML2.DOMDocument,MSXML.DOMDocument,Microsoft.XmlDom]; var XmlDomflag = false; for 更多

??ValidationType属性设置验证的类型,它可以是:DTD, XSD, XDR或者none。假如没有指定验证的类型(用ValidationType Auto选项),浏览器将主动的根据文档用最合 更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值