当前位置:  编程技术>php
本页文章导读:
    ▪php框架Phpbean说明       Phpbean的核心文件很少,这和phpbean的设计思想(强调性能和分工合作开发)是非常相关的。Phpbean的核心仅仅只是实现基本的MVC框架,不提供任何多余的代码,对程序员是非常透明的。 Phpbean.........
    ▪深入解析php模板技术原理【一】       1、模板的由来 在没有模板技术之前,使用PHP开发程序,通常都是php代码和html混编在一起。比如说新闻列表,很可能就是一个newslist.php页面,结构如下: <?  //从数据库中读取出要显示的.........
    ▪php下MYSQL limit的优化       同样是取10条数据 select * from yanxue8_visit limit 10000,10 和select * from yanxue8_visit limit 0,10 就不是一个数量级别的。     网上也很多关于limit的五条优化准则,都是翻译自mysql手册,虽然.........

[1]php框架Phpbean说明
    来源: 互联网  发布时间: 2013-11-30
Phpbean的核心文件很少,这和phpbean的设计思想(强调性能和分工合作开发)是非常相关的。Phpbean的核心仅仅只是实现基本的MVC框架,不提供任何多余的代码,对程序员是非常透明的。
Phpbean的核心文件说明如下(注意,核心文件大都可以单独使用):
1、  action.php action的基类。任何其他的action都必须是它的子类。里面之实现一个功能:对URL数据的处理。
2、  Exception.php是异常处理类,直接继承与Exception
3、  Registry.php phpbean的注册器。关于注册器,可以参考我翻译的文章在PHP中使用全局变量http://www.phpobject.net/blog/read.php/77.htm
4、  Router.php 路由处理。
5、  View.php 试图渲染类。
6、  DB/model.php 和Db/mysql.php 主要是模型层。目前只提供了MYSQL的封装。模型中实现了基本的CURD.对于多表联查等orm并没有实现(主要是考虑性能。)对于DB层的封装,如果需要复杂的orm实现,推荐使用ZF的DB。

目前PHPBEAN提供的可选库类有:
1、  FILE文件库类。提供了文件上传、下载封装类。
2、  Page分页类。JS和PHP分页类。
3、  IMG图像处理类。目前只提供验证码程序
4、  Validate验证类。支持和zend Framework的验证类一起使用。具体可以参考如何扩展ZF——Validate扩展 http://www.phpobject.net/blog/read.php/110.htm
5、  Lucene全文检索(即将推出)。是在zend lucene基础上提供二次开发接口。可能会参考weblucene和nutch的设计。关于中文分词可以参考使用zend Framework的lucene进行全文检索——中文分词 
http://www.phpobject.net/blog/read.php/113.htm

Phpbean致力与为程序员提供一个高度灵活、高度透明的框架。

    
[2]深入解析php模板技术原理【一】
    来源: 互联网  发布时间: 2013-11-30
1、模板的由来
在没有模板技术之前,使用PHP开发程序,通常都是php代码和html混编在一起。比如说新闻列表,很可能就是一个newslist.php页面,结构如下:

<? 
//从数据库中读取出要显示的新闻记录 
?> 
<html> 
<head>…….. 
</head> 
<body> 
<? 
 While ($news = mysql_fetch_array($result)) { 
?> 
<!--输出新闻标题  -- > 
<? 
 } 
?> 
</body> 
</html> 

那么这样有什么问题呢?首先,不利于分工合作。一般来说,都会由程序员来写代码,美工人员设计页面。那么在这种方式中,程序员必须等待美工人员把界面设计好才能开始工作。也就是说程序员和美工的工作是不能同步的。其次、不利于维护,可维护性差。比如说程序固定后,要修改界面,那么必须由美工修改后,程序员再重新添加。最后,程序结构混乱,可读性差。HTML和PHP混编在一起,一旦程序一多,就会变的非常的凌乱。

理解模板原理——使用PHP标签的模板技术
模板技术正是为了解决这些问题而出现的,为了解决这些问题,最早出现的是使用php标签的模板技术。
首先,我们要明白模板的目的是什么。模板主要要实现几个任务呢?第一、美工和程序的分离。更确切的说法是获取数据和显示数据的分离。第二、分工。良好的分工合作。
比如说新闻列表,如果使用模板,我们就可以把新闻列表的操作分成两部分:
1、  getnews.php 负责从数据库中读取数据到数组$news中,不关心$news是如何显示的。
2、  Shownews.php 负责把$news数组输出成HTML页面。而它不需要理会$news是从哪里来的。
好,这样,我们就实现了美工和程序的分离,达到了我们的初步目的,但是如何把这两个页面联合起来,并实现listnews.php的功能呢?
这就需要另外一个页面listnews.php,来负责把“美工(显示数据)”和“程序员(获取数据)”连接起来。应该说这个页面就是很简单了。
假设getnews.php的代码如下:
<? 
$news =“新闻列表”;//实际中应该是从数据库中读取出来的。 
?> 

Shownesw.php的代码如下:
<html> 
<head> 
<title>显示新闻</title> 
</head> 
<body> 
<?=$news?> 
</body> 
</html> 

那么,这个联合页面listnews.php的代码就很简单了
<? 
Include(‘getnews.php');//获取数据 
Include(‘shownesw.php');//显示数据 
?> 

总结
使用PHP标签的模板系统,能够很好的实现美工和程序的分离,同时方便程序员和美工人员的分工合作,比如在上面的例子中shownews.php由美工人员来维护,getnews.php由程序人员来维护。而listnews.php就可以由系统设计人员来维护了。当然这中间需要增加一些约定的文档。
事实上,这个简单的例子也说明了最基本的MVC模型。其中M,模型,也就是负责读取数据,相当于我们的getnews.php。V,就是试图,用来显示数据,也就对应了shownews.php。最后是控制器C,对应我们的listnews.php

学习解释性模板技术——PHPLIB
Phplib的模板系统以小巧灵活、方便简单的特点赢得了很多phper的喜欢,在模板技术中占有一定的地位,它和fasttemplate之类的模板引擎都属于解释性模板技术。
在具体讲解phplib的使用之前,先说明为什么使用php标签的模板系统要继续改进。其实,这主要还是因为PHP标签对美工人员来说不方便。他们更加喜欢直接使用这种可视化的标签,比如{title}。
首先,我们自己把之前我们那个例子修改成使用可视化的标签来处理。第一步,把shownews.php改成shownews.tpl,里面的php标签换成可视化的标签,shownews.tpl的代码如下:
<html> 
<head> 
<title>显示新闻</title> 
</head> 
<body> 
{title} 
</body> 
</html> 
第二步,如何实现listnews.php的效果呢?其实很简单,我只要直接把{title}替换成不就可以了吗?所以,修改后的listnews.php的代码如下:
<? 
Include('getnews.php');//获取数据 
echo str_replace('{title}',$news,file_get_contents('shownews.tpl')) 
?> 

其实phplib的原理正是这样!比如说我们要使用phplib来实现上面功能,我们只需要修改listnews.php.修改后代码如下:
<? 
Include('getnews.php');//获取数据 
include('template.class.php'); 
$t=new Template(); 
$t->set_file(‘shownesw,'shownews.tpl'); 
$t->set_var('news',$news); 
$t->parse('out', ‘shownesw'); 
$t->p('out'); 
?> 
另外关于phplib的区域,大家可以去查阅相应的手册。

编译型的samrty,下次继续讲

    
[3]php下MYSQL limit的优化
    来源: 互联网  发布时间: 2013-11-30
同样是取10条数据
select * from yanxue8_visit limit 10000,10 

select * from yanxue8_visit limit 0,10
就不是一个数量级别的。 

    网上也很多关于limit的五条优化准则,都是翻译自mysql手册,虽然正确但不实用。今天发现一篇文章写了些关于limit优化的,很不错。原文地址:http://www.zhenhua.org/article.asp?id=200

    文中不是直接使用limit,而是首先获取到offset的id然后直接使用limit size来获取数据。根据他的数据,明显要好于直接使用limit。这里我具体使用数据分两种情况进行测试。(测试环境win2033+p4双核(3GHZ) +4G内存 mysql 5.0.19)

1、offset比较小的时候。 
 select * from yanxue8_visit limit 10,10 
   多次运行,时间保持在0.0004-0.0005之间 
  Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10,1
) limit 10 

  多次运行,时间保持在0.0005-0.0006之间,主要是0.0006
 结论:偏移offset较小的时候,直接使用limit较优。这个显然是子查询的原因。
2、offset大的时候。 
 select * from yanxue8_visit limit 10000,10 
  多次运行,时间保持在0.0187左右 
  Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10000,1
) limit 10
多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计offset越大,后者越优。 

    
最新技术文章:
▪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