如何看待PHP Strict Standards错误

前天无意修改了php.ini关于错误输出的设置,今天测试一个CakePHP开发的项目时竟然发现多了几条错误提示,虽然不是致命的但也不能忽视。

错误的描述大概如下:
  1. Strict Standards: Redefining already defined constructor for class Object in D:\www\hosts\cake\ucake-libs\cake\libs\object.php on line 69
     
  2. Strict Standards: Assigning the return value of new by reference is deprecated in D:\www\hosts\cake\ucake-libs\cake\libs\object.php on line 94
     
  3. Strict Standards: Assigning the return value of new by reference is deprecated in D:\www\hosts\cake\ucake-libs\cake\libs\security.php on line 48
     
  4. Strict Standards: Assigning the return value of new by reference is deprecated in D:\www\hosts\cake\ucake-libs\cake\libs\inflector.php on line 65
     
  5. Strict Standards: Assigning the return value of new by reference is deprecated in D:\www\hosts\cake\ucake-libs\cake\libs\configure.php on line 89
     
  6. Strict Standards: Non-static method Configure::getInstance() should not be called statically in D:\www\hosts\cake\ucake-libs\cake\bootstrap.php on line 43
     
  7. Strict Standards: Non-static method Configure::write() should not be called statically in D:\www\hosts\cake\ucake-libs\cake\bootstrap.php on line 82
     
  8. Strict Standards: Non-static method Configure::getInstance() should not be called statically in D:\www\hosts\cake\ucake-libs\cake\libs\configure.php on line 108

查看详细内容…

版块:Cake笔记 Tags: , 时间:2008-11-19 评论:(0)

CakePHP如何使用SQLite数据库

CakePHP是一个多数据库支持的优良的PHP框架。它内置多种数据库驱动程序,比如:Mysql、PostgreSQL、SQLite、ADOdb…使用中可以任意选择,只需要配置database.php文件,无需更改其它任何程序代码。这篇文章之前我也介绍过几篇CakePHP的文章,假如你真的想试一下这个完美的框架的话,你可以去CakePHP官方欣赏一翻(CakePHP官方)。

下面介绍一下CakePHP如何使用SQLite数据库,及其中应该注意的事项:

我现在使用的CakePHP版本为:1.1.20.7692。为什么要提到CakePHP的版本呢?原因很简单,就是CakePHP 1.2之前的版本对于SQLite来说,只支持SQLite2。假如你的SQLite版本为3的话,那也不是没有办法,你需要下载几个数据库驱动程序,可以参考这里:SQLite 3 support

要用SQLite数据库的话,首先您要修改一下App/config目录下的database.php文件。如下: 查看详细内容…

版块:Cake文档 Tags: , , 时间:2008-11-12 评论:(0)

网站多语言支持之自写I18n解析类使用方法及源码下载

本文中的I18n是什么?

I18n是一个由PHP语言编写的语言文件解析类,经过测试已经完全支持PHP4,PHP5。它能正常解析格式为

msgid "id"
msgstr "编号"

的语言文件。使您能够更好,更方便的规划一个多语网站。 查看详细内容…

版块:Cake源码, php源码 Tags: , 时间:2008-11-03 评论:(0)

打造CakePHP Ajax请求Action

在CakePHP的开发模式下,也就是Debug为2的时候,CakePHP会自动显示Sql查询语句及程序执行时间。当要用到Ajax去请求Action的时候难免会被这些语句干扰,使Javascript难解析出Ajax请求后的数据。为此可以这样来定义Ajax请求的action。

PHP代码
  1. function ajaxaciton() {   
  2.     $this->layout = '';   
  3.        
  4.     // 禁止自动Render,免去为此Action去建View的烦扰   
  5.     $this->autoRender = false;   
  6.        
  7.     // 手动定义为运营模式,去除debug信息   
  8.     Configure::write("debug", 0);   
  9.        
  10.     //以utf-8的文本模式输出   
  11.     header("Content-type: text/plain; charset=utf-8");   
  12.        
  13.     /*您的程序*/  
  14.        
  15.     // 输出整理后的数据   
  16.     echo $message;   
  17. }   
版块:Cake笔记 Tags: , , , 时间:2008-10-31 评论:(0)

CakePHP万能配置-满足几乎所有的主机文件分布要求

CakePHP配置图:

由上图可以很清晰的看出此配置下CakePHP文件分布的情况。简单的来介绍一下:这里的配置是将原配置中位于App目录下的Webroot拿出来作此项目的主目录,而原来的app和cake核心文件都在主目录中。

如果你也喜欢此种配置话可以继续看下文。 查看详细内容…

版块:Cake文档 Tags: , , 时间:2008-10-29 评论:(0)

解决CakePHP OthAuth组件更新用户登录时间(last_visit)的错误

错误描述
  1. Query: INSERT INTO `users` (`last_visit`,`created`,`modified`) VALUES ("2008-10-27 07:50:17","2008-10-27 07:50:17","2008-10-27 07:50:17")    
  2. Warning: SQL Error: 1062: Duplicate entry '' for key 2 in D:\www\hosts\cake\ucake-libs\cake\libs\model\datasources\dbo_source.php on line 439   

此错误出现的原因是:用户登录成功后更新最后登录时间时($this->controller->{$this->user_model}->save($row,true,array($this->user_table_last_visit));)丢失其要修改记录的ID造成。

解决办法:在此行(大概在134行)前面添加下面代码

PHP代码
  1. $this->controller->{$this->user_model}->id = $this->user("id");  
版块:Cake笔记 Tags: , , 时间:2008-10-27 评论:(0)

学会使用CakePHP的cache函数

cache($path, $data = null, $expires = "+1 day', $target = "cache')(此函数位于CakePHP核心目录basic.php文件中)

函数功能大概的解释为:缓存数据与取出缓存的数据。

cache函数允许我们传递四个参数:

1,$path: 缓存文件的路径与名称;
2,$data: 要缓存的数据(当为null时为取出缓存数据);
3,$expires: 数据缓存时间(格式:GNU Date Input Formats 语法);
4,缓存的类型(默认为CACHE,一般保留默认即可)。 查看详细内容…

版块:Cake笔记 Tags: 时间:2008-10-09 评论:(1)

CakePHP使用redirect后会停止执行后面的代码吗

CakePHP中$this->Model->redirect(url)后会执行其后面的代码吗?为此我进行了如下测试:

CakePHP Action代码
  1. function index() {   
  2.     $this->redirect("/news/view/");   
  3.     $this->redirect("/news/edit/");   
  4. }  

执行上面代码,没有按我的预计想法执行(跳转到view里),而是跳转到了edit里。由此可见$this->Model->redirect(url);后CakePHP并没有为我们加入exit();方法,它会继续执行其后的代码。

所以建议使用中,如果$this->Model->redirect(url);后我们不想让其后面的代码执行的话,应该手动为其加上exit();方法,即:$this->Model->redirect(url);exit(); ($this->render(view)同)。

版块:Cake笔记 Tags: 时间:2008-10-08 评论:(0)

CakePHP Session->setFlash使用方法

Controller代码
  1. $this->Session->setFlash("Session数据");  

View代码
  1. if($session->check("Message.flash")) $session->flash();  
版块:Cake笔记 Tags: 时间:2008-08-23 评论:(0)

CakePHP如何手动验证表单数据

View中使用$html->input('Content/title');来生成的表单可以用<?php echo $html->tagErrorMsg('Content/title', "请填写标题');?>来显示出错信息

要使这种验证生效可以这样:Model中加$validate = array('title" => VALID_NOT_EMPTY);/*VALID_NOT_EMPTY也可以换为正则表达式*/

Controller相对应的action中应该这样if(!$this->Content->validates($this->data)) {$this->render();}

版块:Cake笔记 Tags: , 时间:2008-07-17 评论:(0)