订阅本站

ThinkPHP3.0.1dev发布

huangdijia 发表于 2012-4-5 分类 PHP/PHP框架 | 发表评论

注意,这次发布的是开发版本,提供开发人员体验和测试,不建议用于正式项目。

[ 更新日志 ]
Action参数绑定支持
模型类命名范围支持
全局系统变量安全过滤支持
增加IS_GET IS_POST IS_PUT 等请求类型常量
日志记录改进 优化日志大小 增加IP记录
U函数对子域名部署的增强和优化
模型类增加filter连贯操作方法 用于对数据的安全过滤
模型类的data方法支持获取当前数据对象
Action类增加_param方法支持 可以自动根据当前提交类型 获取参数
Action类的_get _post方法支持多函数过滤
改进ajaxReturn方法
改进success和error方法
增加自动验证的规则
分组模式下 模型分组可以自动加载
模型类增加close方法 驱动类支持多数据库连接关闭
模型类增加表单提交字段合法性检测 配置insert_fields 和 update_fields
模型强制进行数据字段类型验证
增加DB_SLAVE_NO配置参数 用于指定读服务器的序号
优化模型的create方法的数据对象生成
自动验证的function和callback规则支持多字段

下载地址:http://thinkphp.cn/down-176.html

许多成熟的数据库都支持预处理语句(Prepared Statements)的概念。它们是什么东西?你可以把它们想成是一种编译过的要执行的SQL语句模板,可以使用不同的变量参数定制它。预处理语句具有两个主要的优点:

查询只需要被解析(或准备)一次,但可以使用相同或不同的参数执行多次。当查询准备好(Prepared)之后,数据库就会分析,编译并优化它要执行查询的计划。对于复杂查询来说,如果你要重复执行许多次有不同参数的但结构相同的查询,这个过程会占用大量的时间,使得你的应用变慢。通过使用一个预处理语句你就可以避免重复分析、编译、优化的环节。简单来说,预处理语句使用更少的资源,执行速度也就更快。

传给预处理语句的参数不需要使用引号,底层驱动会为你处理这个。如果你的应用独占地使用预处理语句,你就可以确信没有SQL注入会发生。(然而,如果你仍然在用基于不受信任的输入来构建查询的其他部分,这仍然是具有风险的)。 查看全文

让ThinkPHP支持多伪静态后序

huangdijia 发表于 2012-3-24 分类 PHP/PHP框架 | 发表评论

需求场景
大家都听说过伪静态有利于SEO,很自然的想到ThinkPHP的URL伪静态功能,当然这只是一个引子。
真正蛋疼的需求来了,当你要为自已的站点增加一个网站地图链接的时候,如:

http://www.a.com/index.php/Sitemap/index

通过隐藏index.php之后URL变成了这样

http://www.a.com/Sitemap/index

因为ThinkPHP支持默认操作,URL再简化一点

http://www.a.com/Sitemap

加上伪静态

http://www.com/Sitemap.html

查看全文

声明:此报告纯粹无聊,并不是为了证明wnmpserver的性能多优越,也不是证明ThinkPHP的性能有多好,ThinkPHP性能测试参考《3.0调试模式和部署模式的性能比较》。

Hello World测试

部署模式
Requests per second: 91.25 [#/sec] (mean)
Time per request: 1095.863 [ms] (mean)
Time per request: 10.959 [ms] (mean, across all concurrent requests)
Transfer rate: 52.22 [Kbytes/sec] received

调试模式
Requests per second: 74.04 [#/sec] (mean)
Time per request: 1350.577 [ms] (mean)
Time per request: 13.506 [ms] (mean, across all concurrent requests)
Transfer rate: 40.26 [Kbytes/sec] received

php5.4+mysql+nginx集成环境wnmpserver测试版首发

集成软件
php-5.4.0
nginx-1.1.16
mysql-5.5.20
memcached-1.2.6

更新日志
2012-03-07
[升级]php升级至5.4.0
[升级]mysql升级至5.5.20
[升级]nginx升级至1.1.16
[更新]目录结构调整
[更新]管理脚本改进
[增加]重启脚本wnmp_restart.bat
[问题]php_memcache.dll未找到适合版本

下载地址
wnmp-1.0.0.2beta绿色版

PHP5.4新特性

huangdijia 发表于 2012-3-6 分类 PHP/PHP框架 | 1条评论

PHP5.4正式前两天发布了,之前有看了一些PHP5.4主要特性相关文章,因此在这里小结一下。

其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客。

1. Buid-in web server
PHP5.4内置了一个简单的Web服务器,这样在做一些简单程序就方便多了,省去了环境配置的工作,特别对于初学者来说。
把当前目录作为Root Document只需要这条命令即可:

$ php -S localhost:3300

也可以指定其它路径:

$ php -S localhost:3300 -t /path/to/root

还可以指定路由:

$ php -S localhost:3300 router.php

参考:PHP: Build-in web server
查看全文

PHP变量名中的点

huangdijia 发表于 2012-3-5 分类 PHP/PHP框架 | 发表评论

通常,PHP 不会改变传递给脚本中的变量名。然而应该注意到点(句号)不是 PHP 变量名中的合法字符。至于原因,看看:

< ?php
$varname.ext;  /* 非法变量名 */
?>

这时,解析器看到是一个名为 $varname 的变量,后面跟着一个字符串连接运算符,后面跟着一个裸字符串(即没有加引号的字符串,且不匹配任何已知的健名或保留字)’ext’。很明显这不是想要的结果。
出于此原因,要注意 PHP 将会自动将变量名中的点替换成下划线。 查看全文

ThinkPHP中数据操作心得

huangdijia 发表于 2012-2-18 分类 PHP/PHP框架 | 发表评论

模板中使用函数,相信大部分的TPer都知道也用过吧。
案例:
获取用户名的方法

function get_username($uid){
    $row = M('User')->getbyUid($uid);
    return $row['username'];
}

在模板中通过uid显示用户名

<volist name="rows" id="row">
<tr>
    <td>{$row.uid}</td>
    <td>{$row.uid|get_username}</td>
</tr>
</volist>

这种方法相信大伙应该很常用吧?这种用法有两个不好的地方:
1、过多数据库操作;
2、数据操作的位置不合理,数据库连接过长。

优化方案:
1、尽可能把能合并的数据库操作;
2、数据操作应该保留在数据层,尽可能避免在视图里操作数据库,建议在视图开始前执行mysql_close(),断开数据库连接。

ThinkPHP 3.0RC2 更新日志

huangdijia 发表于 2012-2-4 分类 PHP/PHP框架 | 1条评论

ThinkPHP 3.0RC2 ChangeLog

[系统]
[修正] 修正R方法的第二个参数传人数组
[修正] 修正部署模式下的模版编译问题。
[新增] 添加项目的core.php配置文件,用于追加项目核心编译列表文件
[新增] 添加layout方法 用于控制布局入口的文件
[新增] functions函数库添加trace函数,用于页面Trace信息设置和自定义添加显示 并调整页面Trace行为扩展和模板,改为调用trace方法
[改进] 优化alias_import方法
[改进] 改进import的项目类库目录判断
[改进] Think类的buildApp方法改进 模式别名定义和项目别名定义支持同时定义 取消模式的公共文件定义,直接在核心文件列表中加载即可
[改进] 系统函数库增加session函数用于操作session App类改进对session的支持
[改进] 改进View类,如果设置模板引擎为PHP的话 则不调用view_parse标签行为扩展
[改进] 项目自定义trace信息配置文件会合并到系统默认页面Trace中
[改进] LOG类完善 支持配置不同的日子记录方式和其他参数 惯例配置文件增加LOG_TYPE、LOG_DEST和LOG_EXTRA配置 LOG_RECORD_LEVEL 参数更名为LOG_LEVEL
[改进] 优化import方法的文件导入 如果存在类名冲突则不导入
[改进] 改进系统函数库的load方法
[改进] runtime和alias文件添加访问检测
[改进] 修正部署模式下面开启页面trace后 exec运行时间为负数的错误
[改进] 修正Widget类对于think引擎的判断
[改进] 系统路径常量允许被重定义
[删除] 去掉runtime文件中的mkdirs函数
查看全文