当前位置:  编程技术>php
本页文章导读:
    ▪通过实例了解PHP的mvc开发      一、入口文件 入口文件可以是单文件也可以是多文件,我用的基本属多文件,但是入口文件内容基本都是一样,为以后的修改其它的入口方式做基础。   代码如下: <?php require 'command/co.........
    ▪php mvc开发模式的一点思考      mvc开发模式 MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。 MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。 有必要严格区分mvc的.........
    ▪php中用于查找字符串的常用函数      php中用于查找字符串的常用函数,包括strstr、stristr、strpos、substr等,本文主要为大家介绍strstr的使用,感兴趣的朋友不妨参考下。 一、strstr  查找字符串的首次出现 string strstr ( string $haystac.........

[1]通过实例了解PHP的mvc开发
    来源: 互联网  发布时间: 2013-12-24

一、入口文件
入口文件可以是单文件也可以是多文件,我用的基本属多文件,但是入口文件内容基本都是一样,为以后的修改其它的入口方式做基础。
 

代码如下:
<?php
require 'command/config.php';
require 'command/app.php';
app::run($config);
?>
 

加载系统配置文件,然后通过引擎来加载系统配置。

二、引擎

代码如下:
<?php
public function run($config){
header("Content-type:text/html;charset=utf-8");
self::$config = $config; //加载系统配置
self::copyright();
self::testsystem(); //系统环境
self::setsystem(); //设置系统参数
self::incinfo();
if(!IN_WEB){exit('网站正关闭维护中,请稍候访问!');}
defined('KEHENG_DEBUG') or define('KEHENG_DEBUG',true); // 是否调试模式
self::setpath(); //设置系统路径
self::getdatabase(); //测试数据库
self::loadlib(); //加载库
self::getRouteConfig(); //运行路由并加载控制器
}
 

首先,设置配置文件,再测试系统参数,加载系统模块,取得配置在的网站信息文件,设置网站需要的路径,测试系统配置里面的数据库参数,加载库文件,最后是加载路由获取请求地址。
以上流程只是我根据自己的学习自己编写的一套而已,但里面却缺少缓存,具体缓存应该怎么样的设置。
这里的数据库测试是根据配置用哪一类型的数据库,再加载对该类型数据库操作的封装文件。

三、路由
以下为上面的最后一个函数,加载控制器文件,根据配置文件获得请求方式。
 

代码如下:
<?php
/**
 路由
 @link http://www.
*/
public function getRouteConfig(){
$route_type=self::$config[route][url_type];
switch($route_type){
case 1:
//echo $_SERVER['SCRIPT_NAME'].'<br />';
$query_string=$_SERVER['QUERY_STRING'];
//echo $_SERVER['REQUEST_URI'].'<br />';
$urlstr=$_GET['controller'];
break;
case 4:
$url = end(explode()('/', $_SERVER["PHP_SELF"]));
$urlstr = strtolower()(substr($url,0,-4));
break;
}
if(file_exists(Contr_DIR.'Controller.php')){
require Contr_DIR.'Controller.php';
//echo $urlstr;
$template = self::$config['Templates'];
controller::load($urlstr,$template);
}else{
exit('控制器文件不存在');
}
}

四、控制器
控制器文件也蛮简单,只是根据路由分析出的地址来加载模型文件和视图文件,
 

代码如下:
<?php
/**
 控制器
 @link http:/www.
*/
class controller{
public $obj;
public function load($url,$template){
$config=$template;
if(file_exists(Model_DIR.$url.'.model.php')){
$views = new views;
//echo Model_DIR.$url.'.model.php';
require Model_DIR.$url.'.model.php';
$temp = $config[$url][0];
if($temp!='' && $temp!=null && isset()($temp)){
if(file_exists(Templ_DIR.$temp)){
//echo Templ_DIR.$temp;
require Templ_DIR.$temp;
}else{
exit('视图文件不存在!'.$temp);
}
}else{
exit('此页未设置显示模板!'.$temp);
}
unset($views);
}else{
exit('模型文件不存在:'.$url.'.model.php');
}
}
}
 

注意:
模型文件里需要输出的数据全部都是通过views这样一个类进行输出,包里视图文件里面所有的系统参数等。
不知此种方法是否多此一举,原来是想把所有要输出的数据进行封装。
其它的模板文件也都是用类进行了封装。

至于,mvc中的缓存应该怎么写,现在还是一个模糊的概念,是不是在读取数据时,方向应该是读取缓存,然后再判断缓存是否存在,再判断是否需要建立缓存呢?
期待有高人指点下,请加入官方QQ群:161228069 参与讨论吧。


    
[2]php mvc开发模式的一点思考
    来源: 互联网  发布时间: 2013-12-24

mvc开发模式
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。
MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

有必要严格区分mvc的三层模式模式吗? m与c的跨界使用更有利于快速开发。
在我使用的框架中 m与c可以跨界使用,并不严格区分。有时候很想直接在c里处理m的事,因为业务的数据处理并不多见,也许只有一次。
这样在m里面写个函数,再用c调用,变得复杂,这与php快速开发理念相悖。

我们需要的什么?
1.视图分离
2.代码重用
3.开发效率

个人觉得在mvc模式开发中,并不一定要强制去区分 m和c,需要重用的数据放入m里,简单的不需要重用的可以直接扔到c里。
期待高人指点,请加入官方QQ群:161228069 参与讨论吧。


    
[3]php中用于查找字符串的常用函数
    来源: 互联网  发布时间: 2013-12-24

php中用于查找字符串的常用函数,包括strstr、stristr、strpos、substr等,本文主要为大家介绍strstr的使用,感兴趣的朋友不妨参考下。

一、strstr  查找字符串的首次出现
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
注1:$haystack是当事字符串,$needle是被查找的字符串。该函数区分大小写。
注2:返回值是从needle开始到最后。
注3:关于$needle,如果不是字符串,被当作整形来作为字符的序号来使用。
注4:before_needle若为true,则返回前东西。
 

代码如下:
<?php
$email = 'test@';
$domain = strstr($email, '@');
echo $domain; // 打印 @example.com
$user = strstr($email, '@', true); // 从 PHP 5.3.0 起
echo $user; // 打印 yuxiaoxiao
?>

二、stristr strstr不区分大小写的版本

三、strpos -查找字符串首次出现的位置

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
注1:可选的 offset 参数可以用来指定从 haystack 中的哪一个字符开始查找。返回的数字位置是相对于 haystack 的起始位置而言的。

四、substr -返回字符串的子串
 

代码如下:
string substr ( string $string , int $start [, int $length ] )
$rest = substr("abcdef", -1); // 返回 "f"

注1:如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。

注2:如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。

注3:如果 string 的长度小于或等于 start,将返回 FALSE。

length

注4:如果提供了正数的 length,返回的字符串将从 start 处开始最多包括 length 个字符(取决于 string 的长度)。

注5:如果提供了负数的 length,那么 string 末尾处的许多字符将会被漏掉(若 start 是负数则从字符串尾部算起)。如果 start 不在这段文本中,那么将返回一个空字符串。

注6:如果提供了值为 0,FALSE 或 NULL 的 length,那么将返回一个空字符串。

注7:如果没有提供 length,返回的子字符串将从 start 位置开始直到字符串结尾。
 

代码如下:
<?php
$rest = substr("abcdef", 0, -1); // 返回 "abcde"
$rest = substr("abcdef", 2, -1); // 返回 "cde"
$rest = substr("abcdef", 4, -4); // 返回 ""
$rest = substr("abcdef", -3, -1); // 返回 "de"
?>

五、strrchr -查找指定字符在字符串中的最后一次出现
string strrchr ( string $haystack , mixed $needle )
该函数返回 haystack 字符串中的一部分,这部分以 needle 的最后出现位置开始,直到 haystack 末尾。

六、strripos -计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)

七、stripos -查找字符串首次出现的位置(不区分大小定)

八、strrpos -计算指定字符串在目标字符串中最后一次出现的位置


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3