易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
PHP常见错误的翻译(一)

PHP常见错误的翻译(一)

Common PHP Errors
常见PHP错误
December 7, 2007 - 10:44 pm | Nessa (来源,忘了从哪个网站COPY的了)
I’m going back to the basics here, you know, when you wrote your first PHP script and saw an ugly-ass error message pop up on your screen? Error messages are the best tool a programmer has.
我又回到最基础的上面来了,你知道,当你在最初写PHP代码时,你是否经常看到那些可恨(我翻译成可恨了)的出错信息?其实,出错信息对一个程序员来说是一个最好的工具。

Set up Error Reporting
设置出错报告

Most PHP errors are straight forward, but there are times where you don’t see any which makes it very difficult to tell what the problem is.
大多数PHP的错误信息都比较直观,但有时你看到的错误信息却很难明确的告诉你问题在哪里。

The first step of PHP troubleshooting is to turn error reporting on. For security reasons you’ll want error reporting off by default, but if something goes wrong you’ll need the information for debugging. You can usually enable error reporting by adding this line to the problem script:
首先你得打开你的 PHP出错报告。从安全角度来说,你可能会想到关闭它。但是如果程序出了问题,而你又需要debug的时候,你可以通过以下的PHP代码临时来打开出错信息。

<?php error_reporting(E_ALL) ?>

Or you can add these lines to the root .htaccess:
或者,你可以将以下几行加入到.htaccess文件里

php_flag display_errors on
php_value error_reporting 6143

This will usually display an error useful for troubleshooting, that is, if the software and your server configuration allows it.
如果软件或者服务器支持,这可以显示一些有用的错误信息

例如:
Parse Errors
解析错误
Parse error: parse error, unexpected T_STRING in……
This is a syntax error. Perhaps you forgot a semi-colon at the end of a line, or you forgot a double quote (”) or an end bracket (}) after you started one. For quote and semicolon issues, the problem is usually the line above the one reported in the error. For brackets, it may be at the end of the script.
这是一个语法构造错误。(这段翻译我想不出怎么好,自己根据理解翻译)出现这段信息的时候,往往都在出错代码的上一行,请检查一下代码的结束,是否双引号或者大括号不匹配,有时候也会有一些字符串的问题在里面。

Parse error: syntax error, unexpected $end in
You’re most likely missing a } somewhere. Make sure that each { you have is also closed with a }.
这东西是忘记了“}”,请检查“{}”是否一一对应了。

Parse error: syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in..
There may be double quotes within double quotes. They either need to be escaped or brought to single quotes. It’s also possible that a new PHP statement was started before the previous was finished.
出现这种问题往往是在双引号中又有了双引号,可能需要在双引号前加上转义符或者使用单引号。通常问题在显示的行数之上一行。

Header Errors
头出输出错误

Warning: Cannot add header information - headers already sent by (output started at /home/vnessa5/www/errors.php:9) in….
Warning: Cannot send session cache limiter - headers already sent in somefile.php on line 222

Naturally, HTML will parse before PHP. The script is trying to send header information after you’ve already sent output to the browser. HTTP headers are required to be sent before any output from your script, which means that a header function must be placed before any html or even a white space. There are two solutions for this. Either (1) Set the header tags the top of the document, or (2) insert a header redirect by adding this to the very top of the page to force the output buffer:
一般情况下,HTML的解析都会在PHP前面,而代码尝试在发送header相关信息时,你已经有了HTML输出。所以你在发现有这种情况出现的时候,请检查你的代码以保证没有HTML代码或者甚至是一个空格。一般有两个解决方案。1)在文件头部设定HEADER标签。2)在你要输出的页面前插入HEADER标签的内容。

<?php ob_start();

Then this at the very end of the page (not usually required)

ob_end_flush(); ?>

ZendFramewok介绍

3a98d2de71841cd612748baced5a056b

ZF 其实我并不想多做介绍,毕竟对于熟悉PHP的人来说,ZF往往还是被当成研究对象的。官方出品的东西,怎么着都有其优点存在,而且有些类似于MFC中的隐藏函数功能,在ZF里也可能会看到,平时我们不太用、但确实有用的功能,也能够在ZF里面找到。

偷懒一下,直接把framework.zend.com中的whyzf的页面COPY过来,当作ZF的介绍,呵呵。

Why Zend Framework?

Extending the art & spirit of PHP, Zend Framework is based on simplicity, object-oriented best practices, corporate friendly licensing, and a rigorously tested agile codebase. Zend Framework is focused on building more secure, reliable, and modern Web 2.0 applications & web services, and consuming widely available APIs from leading vendors like Google, Amazon, Yahoo!, Flickr, as well as API providers and cataloguers like StrikeIron and ProgrammableWeb.

Expanding on these core themes, we have implemented Zend Framework to embody extreme simplicity & productivity, the latest Web 2.0 features, simple corporate-friendly licensing, and an agile well-tested code base that your enterprise can depend upon.

Extreme Simplicity & Productivity

We designed Zend Framework with simplicity in mind. To provide a lightweight, loosely-coupled component library simplified to provide 4/5s of the functionality everyone needs and that lets you customize the other 20% to meet your specific business needs. By focusing on the most commonly needed functionality, we retain the simplified spirit of PHP programming, dramatically lower the learning curve, and your training costs – so developers get up-to-speed quickly. We do this with:

  • An extensible and well-tested code base – easy to augment
  • A flexible architecture – not locked-in to a rigid application structure
  • No configuration files necessary to get up and running – or when maintaining and deploying your apps

Frameworks and best practices mean reduced training costs and quicker time-to-market – important factors in adoption decisions. Built so you can pick and choose just the pieces you need to turbocharge your web applications – all your developers know where to find their PHP / Zend Framework code, speeding new development and reducing maintenance costs.

Latest Web Development Features

  • AJAX support through JSON – meet the ease-of-use requirements your users have come to expect
  • Search – a native PHP edition of the industry-standard Lucene search engine
  • Syndication – the data formats & easy access to them your Web 2.0 applications need
  • Web Services – Zend Framework aims to be the premier place to consume & publish web services
  • High-quality, object-oriented PHP 5 class library – attention to best practices like design patterns, unit testing, & loose coupling

Friendly & Simple Licensing, Safe for the Enterprise

Based on the simple and safe new BSD license, with Zend Framework's License, you rest assured that your code is compliant, unimpeachable, and protected as you see fit. We also require all contributors to the open source Zend Framework to complete and sign a Contributor License Agreement (CLA) — which is based on the standard open-source Apache license — protecting your own intellectual property (that is, your added-value) built on Zend Framework.

Fully Tested – Extend Safely and Easily

Tested. Thoroughly. Enterprise-ready and built with agile methods, Zend Framework has been unit-tested from the start, with stringent code coverage requirements to ensure that all code contributed has not only been thoroughly unit-tested, but also remains stable and easy for you to extend, re-test with your extensions, and further maintain.

Fleaphp介绍(在迟来的QeePhp前的最后介绍)

aa80f68268363f74e6798d4b3651ad37
主要特征:
  1. 完全跨平台
  2. 100% 兼容 PHP4 和 PHP5
  3. 不倚赖特别的 PHP 扩展模块
  4. 简单、容易理解的 MVC 模型
  5. 易于使用、高度自动化的数据库 CRUD 操作
  6. 丰富的助手对象和组件
  7. 开放源代码,完全中文化的注释和文档
  8. 商业公司提供技术支持

FleaPHP 的设计目标

FleaPHP 致力于减少开发者创建 Web 应用程序的工作量,并降低开发难度和强度,提高开发效率。

  • 快速、轻量级,避免臃肿的结构带来的性能损失

    由于 PHP 是解释执行,如果花费太多资源在框架本身,显然不适合的。就像一台计算机如果把大量的资源都花在操作系统上了,而应用程序能够得到的资源却少得可怜,显然是无法让用户接受的。

  • 可扩展、开放性的架构,允许开发者引入自己的组件或者任何成熟的工具库

    框架虽然提供了许多组件,但不可能完全满足用户的需求。因此,框架本身应该是松散耦合、可扩展的。开发者可以很简单的为框架加入新的组件。同时,框架的逐步发展也不应该影响框架的核心基础。最后,开放性的架构让开发者在框架中引入其他组件或者工具库时不会遇到任何困难。例如开发者可能会使用 Smarty 来做模板引擎,以及 PEAR 中的一些库来简化开发工作。

  • 尽可能少的契约,但同时提供足够的自动化能力,减轻开发强度

    虽然契约式编程,可以让框架本身的设计变得更简单,开发者也能从框架获得更多的帮助。但太过严格的规则和约定会明显降低框架的适应性,为此需要对两者进行适当的平衡。FleaPHP设计时采用尽可能少的契约,通过更复杂的实现来实现一些自动化能力。或者以最少量的配置信息来帮助框架为开发者提供服务。

  • 高度灵活的解决方案,提供开发应用程序的大多数基本组件

    虽然现在已经有许许多多出色的工具库可供选择。但对于一些平常的需求来说,这些工具库可能具有过度杀伤能力(也就是说工具库本身提供了远远超过需求的功能)。由此带来了学习难度增大、性能降低等问题。为此,FleaPHP 框架提供了一组轻量级的基本组件。这些组件被设计为拥有基本的功能和可扩展。 例如 FleaPHP 附带的基于角色的权限验证组件虽然不如 phpGACL 这样的库功能强大,但却能够解决平常开发都会遇到的典型权限验证问题,并允许开发者自行扩展这个组件。



FleaPHP 的主要特征

除了 MVC 模式实现、Dispatcher 调度器、模板引擎等常见功能外,FleaPHP 框架还拥有许多独一无二的特点:

  • 简单、容易理解的 MVC 模型

    不像其他流行的框架,FleaPHP 提供的 MVC 模型注重简单和容易理解。例如 FleaPHP 不要求开发者从特定的类派生自己的控制器类和业务模型类。

  • 易于使用、高度自动化的数据库 CRUD 操作

    FleaPHP 采用 TableDataGateway 设计模式来封装数据表操作。FLEA_Db_TableDataGateway 类不但提供了容易使用的 CRUD 操作,还实现了数据表之间的关联操作。同时,FleaPHP 没有像其他框架那样将每一行记录都封装为一个对象(毫无疑问这会产生明显的性能问题),而是利用 PHP 强大的数组来保存和传递数据。

  • 尽可能少的配置

    虽然像数据库联接信息等配置仍然是不可少的,但 FleaPHP 应用程序通常只需要设置几个选项,即可在各种环境中运行良好。而且 FleaPHP 的所有设置都采用 PHP 数组来保存,不但容易理解,而且省掉了解析、缓存等不必要的过程,提高了性能。

  • 高度可配置能力

    虽然 FleaPHP 自动化程度很高,但 FleaPHP 同时也拥有高度的可配置能力。通过覆盖 FleaPHP 默认的选项,开发者可以获得最大程度的灵活性。让开发者可以在适应现有代码、保持开发习惯等各方面获得好处。

  • 自动化的数据验证和转义

    即便不做任何处理,程序将数据通过 FLEA_Db_TableDataGateway 提交到数据库前。FleaPHP 也会自动对数据进行验证,并转义特殊字符,最大程度消除 SQL 注入攻击。

  • 丰富的助手对象和组件

    FleaPHP 附带了一些非常实用的助手对象,从生成图像验证码、处理文件上传到通用数据验证等。这些助手对象大多是一些独立的对象,完全不依赖于 FleaPHP 框架本身。因此开发者不但可以在 FleaPHP 之外使用这些助手对象,也可以方便的加入自己的助手对象。 组件是比助手对象更为复杂的可重用单元。这些组件包括基于角色的用户管理、脚手架等。利用这些组件,开发者可以很快的完成一些常见任务,并能在这些组件基础上扩展出功能更复杂的组件。

  • 与 Smarty 集成

    只需要修改几个选项,FleaPHP 应用程序就可以和流行的 Smarty 模版引擎集成。

  • 100% FREE

    当然,最后一点就是 FleaPHP 是一个完全开放源代码和文档(不是那种滑稽的删除了所有注释仅能运行的代码)、不限制使用的项目。你可以自由的学习、使用 FleaPHP,也可以在自己的应用程序中使用 FleaPHP。不管你的应用程序是否是商业应用,都不需要公开你的源代码,从最大程度上保护了你的知识产权。不过如果你愿意将代码反馈到社区,那么大家都会感谢你。

请记住,FleaPHP 是一个持续发展的框架,随时有新特性被加入到框架中。你现在需要,但 FleaPHP 尚未提供的功能,也许不久以后就出现在 FleaPHP 中了。当然,这需要你积极参与 FleaPHP 的发展,提出你的建议和意见。



自由的 FleaPHP

FleaPHP 是一个遵循 BSD 协议发布的开放源代码应用程序开发框架。你可以免费获取 FleaPHP 框架,并应用到自己的开发工作中。与流行的 GPL 协议不同,FleaPHP 遵循的 BSD 协议不要求开发者将基于 FleaPHP 框架开发的应用程序公布于众。这很好的保护了开发者及其所属企业的利益。更进一步,即便你基于 FleaPHP 实现了自己的产品或者对 FleaPHP 进行了修改以满足自己的需求。你仍然不需要公布你的劳动成果。

下面是关于 BSD 协议的简单介绍:

BSD 开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了 BSD 协议的代码,或者以 BSD 协议代码为基础做二次开发自己的产品时,需要满足三个条件:

  • 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的 BSD 协议。
  • 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的 BSD 协议。
  • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD 协议鼓励代码共享,但需要尊重代码作者的著作权。BSD 由于允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。很多的公司企业在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

久候的Red Alert3

  红警是我从95年起就开始玩的一款游戏,那时候在PS、土星上面玩,再后来,开始在WIN95下面操练,到WIN98的时候网吧里几乎每台机器上都已经有了这款游戏。成天不停的造坦克,造猛犸,日子就这样一天一天的被消磨着。01年还是02年的时候,RedAlert2的出现又给我带来的新的娱乐。只是RA几个版本的缺点都是:CPU运算速度越快,电脑出兵的速度也就越快……当然,我的微操能力还是很差的,所以只有不停的造不停的造才能和电脑PK。

  如今……

bcad8a71ad3b5d52d1d84dc1c089e789

  “7年了,红色警报回来了!因为时间穿越出错,一支新的超级势力登上了世界舞台,加入了狂暴的第3次世界大战。旭日帝国在东方崛起,第3次世界大战成为了3方角逐的战场:苏联、盟军和这个帝国,他们的军队装备有各种疯狂的武器和古怪的科技,特斯拉线圈、重型战斗飞艇、超时空传送、装甲熊、智能海豚、浮岛堡垒以及幻影坦克等等。准备体验红色警报传奇的新篇章吧!”
  《红色警报3》的其他信息包括:
  —将在PC、Xbox360、PS3发行;
  —将包含完整的多人合作战役;
  —执行制作人是Chris Corry;
  —海战将会成为游戏的核心之一;
  —故事剧情:面临灭顶之灾的苏联想穿越时空改变历史。但出了点小问题,创造出了一条完全不同的时间线,一个新势力崛起并加入了第3次世界大战。
  —第3方是日本,是一个拥有超高科技的强大势力。

  小资料:制作人Chris Corry

  Chris Corry[/color],2000年加入卢卡斯艺术,担任游戏设计师,拥有雄厚的跨平台游戏开发经验,先后参与开发了《星球大战:星际战士》(Star Wars: Starfighter)、《星球大战:绝地战士》(Star Wars: Jedi Starfighter)以及大型网络游戏《星球大战银河:帝国分裂》(Star Wars: Galaxies - An Empire Divided),2004年加入EA洛杉矶,担任游戏开发主管职务,主创了《中土之战》系列。随后Chris Corry担任EA洛杉矶的高级游戏策划,在《命令与征服3》开发过程中,同执行制作人Mike Verdu紧密配合、协作,为《命令与征服3》的成功付出了巨大的努力。2007年,Chris Corry跃升为《红色警报3》的执行制作人。

JQuery学习第一天

JQuery,prototype,mootools是现在应用的比较多的JS框架了

其它的我就不谈了,现在正在用JQuery,正好做个笔记。

用JQuery官方的话来说,一般普通开发人员,如果仅仅是为了使用JQuery的话,那么,用的最多的应该是XPath,Css,只有这两个熟悉了,才能完整的使用JQuery,而XPath又是重中之重。

XPath的功能是让你可以在DOM里迅速定位到某一个确定的元素,在以前,我们不得不通过:getElementById,getElementsByName,等函数来得定位元素,而现在,$(),几乎可以完成常用的功能。

$('#test'),代表了以前的document.getElementById('test');

当然,这只是最简单的,复杂的就是在那些Xpath上了,例如
$("div > p") ,$("//div/p")等等
更详细的,可以参考:http://docs.jquery.com/DOM/Traversing/Selectors

用完了XPath后,就是一些常用的事件了,如click,mouseover,mouseout等这些都是可以后定义的也算是比较方便

对于页面元素,JQuery也简化了一些操作,比如取input框的值,取innerHTML,innerText等,不但取值方便,而且设定值的时候也非常方便。

今天的笔记就做到这样,只能算是稍稍理一下思路。慢慢再写

快速生成目录树

快速生成目录树

网页开发时,很多时候都会遇到生成目录树的问题,系统自带的mkdir仅仅只能生成单个目录,当面对“abc/def/ghi/jkl/”这样的路径时,就没有办法了。这时候,可以利用一个简单的递归,同时调用PHP自带函数dirname,就可以很方便的生成目录树

<?php

function mkdirs($path , $mode = 0755 ){
if(!is_dir($path)){
mkdirs(dirname($path),$mode);
mkdir($path,$mode);
}
return true;
}

这样就比较方便的生成一个目录树了,该函数主要用于:1、生成缓存目录,2、生成静态文件目录,3、生成上传文件目录。

其它地方用的并不是很多

又是情人节

情人节又到了。这是我在上海过的第9个情人节了。两个人的情人节也过了五六年了,每年的情人节都有不同的滋味。

今年的情人节又与以往不一样,成家了,尚未立业,陪着老婆再次疯狂一下吧。

顺便纪念一下单身的日子

ThinkPHP介绍

ThinkPHP介绍

ThinkPHP 不是你所想象的只是一个提供一组类库的框架,ThinkPHP 是一个具有你开发所需的全功能的开发平台,是一个有机组合体,是一个让你可以立刻开始编写应用逻辑的开发框架,并且具有很好的扩展性。

[ 1.0.1 ] 2008-2-2

  • 修正Db类在Oracle下面的parseLimit方法判断
  • 优化数据库驱动类的查询结果获取
  • Model 类增加字段的表达式插入和更新支持
  • 完善了Db类的条件查询字段中带有空格的处理
  • Model类增加了delConnect方法用于删除动态增加的数据库连接
  • 增强了分布式数据库的支持 可以设置是否需要读写分离
  • Model类增加智能切换功能 switchConnect方法可以自动识别是否是相同的数据库连接类型
  • 增加了组件模块的URL分割定义配置 COMPONENT_DEPR 包括对操作链的设置采用相同的参数定义
  • 修正Model类的count等统计方法会自动缓存的问题 DB类默认关闭查询缓存
  • 修正RBAC组件的权限判断
  • 修正组件模块方式下面的模板文件/CMS/Tpl/default/Public的替换
  • 修正Html标签库的list标签的actionlist属性的支持
  • 修正PDO类在某些数据库下面的getAll方法的BUG
  • 增加核心缓存文件的开关功能 在入口文件里面设置 CACHE_RUNTIME 为 false
  • 修正了使用组件模块的时候模板文件中/index.php/Index的解析问题
  • 修正模板和语言的切换cookie
  • Model类增加addConnect和switchConnect方法 用于支持多数据库的连接
  • 修正了语言包的缓存导致切换语言无效的问题
  • Db类增加多数据库连接的内置支持
  • 修正Model类在某些数据库下面where条件表达式不支持where 1 的情况
  • Db类增加getLastSql方法用于获取最后一次查询的sql语句
  • 完善Log类的操作以及优化错误日志的写入
  • 修正model的数据库连接配置读取
  • 在Ajax返回之前保存日志记录
  • 完善compare标签
  • 改进Vendor函数的baseUrl参数定义
  • 改进项目语言包的定义 不同语言分成不同子目录
  • 简化了query方法的数据库缓存
  • 增加clearCache方法,用于清空项目相关缓存目录
  • 增加firebird数据库驱动支持
  • 修正pgsql驱动
  • 修正~app.php 文件的编译缓存路径的问题
  • 增加编译缓存路径的设置 RUNTIME_PATH

[ 1.0.0 ] 2007-12-25

  • 优化了执行效率和内存开销
  • Import方法增加同名检测和类检测
  • 完善PHP 5.2.0以下版本的支持
  • 去掉了核心对Config、Language、Cookie和Session类库的依赖
  • 去掉了Action类内置的默认操作
  • 改进了MySqli的驱动类库
  • 修正了主键不是自动增长的时候Model的add方法返回错误
  • 修正了mysqli的escape_string方法
  • 修正了PDO的连接params参数问题
  • 修正了Model的findAll的关联查询问题
  • 修正了Model类的getModelName方法问题
  • 修正了RBAC的模块大小写设置
  • 去掉volist resultset标签,均作为iterate标签的别名
  • 增加了项目编译机制和核心类库编译机制
  • 标签库定义增加标签的别名定义
  • XML模版结束标签增加对空格的支持
  • 增加compare标签和eq neq gt egt lt elt heq 和nheq标签别名
  • 增加了多模版和多语言的开关
  • RBAC认证增加了操作的认证设置,之前只支持模块的认证设置