Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

2010年2月5日

摘要: 1. PHP 代码必须以完整的形式来定界,短定界符只能用在视图。例如 :<?php// Php code here?>// index.phtml<?='hello'?>2. 当一个字符串是纯文字组成的时候(即不含有变量),则必须总是以单引号(')或者撇号(`)作为定界符。例如 :$a='Example String';$b=`Excute Something`;3. 当一... 阅读全文

posted @ 2010-02-05 20:01 analyzer 阅读(410) 评论(0) 推荐(0)

摘要: 1. 文档块必须用 "/*" 或者 "/**" 作为开头。"#" 是不允许的,而 “//” 的使用仅限于函数内部。例如 :/*** 类描述*/classfoo{ /* 变量描述 */ public$foo; /** * 函数描述 */ publicfunction__construct() { // 用 '//' 进行注释仅允许在函数内部 $this->foo='... 阅读全文

posted @ 2010-02-05 20:01 analyzer 阅读(386) 评论(0) 推荐(0)

摘要: 1. Zend Framework 的代码应该不存在 E_STRICT 兼容问题。在开启错误报告 error_reporting 级别为 E_ALL | E_STRICT 时,Zend Framework 的代码不应该抛出任何警告(E_WARNING, E_USER_WARNING),任何通知(E_NOTICE, E_USER_NOTICE)以及任何兼容问题(E_STRICT)。这就是说,Zend... 阅读全文

posted @ 2010-02-05 20:01 analyzer 阅读(589) 评论(0) 推荐(0)

摘要: 当我们实现诸如会员注册功能时,通常会给出一个验证码和输入框,要求用户输入,以确认该用户的有效性。这个功能在 Zend Framework 里面由 Zend_Captcha 组件提供,特别是 Zend_Captcha_Image,它允许用户把验证码用图片的形式展示出来。如下图 :以下我要实现的就是,当我们点击上面图片时,图片会自动更新,就像通常我们在论坛注册时看到的那样。为此,我们需要做一些前期工作... 阅读全文

posted @ 2010-02-05 20:00 analyzer 阅读(735) 评论(0) 推荐(0)

摘要: 1. 类命名总是对应于其所属文件的目录结构。这源于PEAR 命名约定,能让人从类名就能联想到该类的存放位置。例如 :Zend_Acl_Role 就代表 Zend/Acl/Role.php 文件。require_once'Zend/Acl/Role/Interface.php';classZend_Acl_RoleimplementsZend_Acl_Role_Interface{ ......}这... 阅读全文

posted @ 2010-02-05 20:00 analyzer 阅读(513) 评论(0) 推荐(0)

摘要: Zend_Dojo是 Zend Framework 1.6 中加入的,同时被绑定发行的还有Dojo 工具包。利用 Zend_Dojo 提供的简单接口,我们可以很方便的调用 Dojo 工具来完成很多客户端的强大功能。前几天用 Zend_Dojo 和Zend_Dojo_Data做了一个简单的dojox.grid.DataGrid例子,在这里分享一下。以下代码可以黏贴到任何视图中运行,因为我用的是 Go... 阅读全文

posted @ 2010-02-05 19:58 analyzer 阅读(2257) 评论(0) 推荐(0)

摘要: 1. 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。实际上这个问题只有当你不开启压缩或缓存输出时才会出现:// php.ini - 禁止压缩输出及缓存输出zlib.output_compression = offoutput_buffering = off//foo.php - 注意这个时候有一些空格或换行符掉在了 "?&... 阅读全文

posted @ 2010-02-05 19:57 analyzer 阅读(391) 评论(0) 推荐(0)

摘要: 利用 AOL 和 Google Api 提供的全球 CDN 我们可以在任何地方很方便的调用 dojo 工具包,其大小仅30k左右 :<!-- 从 AOL 调用 --><script type="text/javascript" src="http://o.aolcdn.com/dojo/1.3/dojo/dojo.xd.js"></script><!-- ... 阅读全文

posted @ 2010-02-05 19:56 analyzer 阅读(1566) 评论(0) 推荐(1)

摘要: 当人们想用不同方法去实现同一种东西的时候,通常会想起 builder 建造者模式。比如一座大厦,设计图已经做好了,但是它可以由不同的工程师来指挥不同的建筑团队来完成,而最终得到的大厦则是一样的。在这里不得不说一下 builder 建造者模式和 factory 工厂模式的区别。其实 factory 顾名思义,它提供各种产品,如电饭锅,微波炉等等,而 builder 则是提供成品,而且有多种途径,例如... 阅读全文

posted @ 2010-02-05 19:55 analyzer 阅读(305) 评论(0) 推荐(0)

摘要: 众所周知,大量的 css 及 js 文件是影响网站速度的最主要原因之一。而且很多时候我们又不得不把它们分开来以便管理。然而我们通过日常的实践,发现分5次发送10k的文件的速度,要远慢于一次性发送50k的文件,原因正在于 http request 请求是非常昂贵的。在 Zend Framework 中,我们可以结合 layout 及 view helper 来做一些优化工作,以尽量减少 http r... 阅读全文

posted @ 2010-02-05 19:53 analyzer 阅读(383) 评论(0) 推荐(0)

摘要: 在用 Zend Framework 构建应用程序时,我们通常以 index.php 作为入口文件,并在其中创建 Zend_Application 对象及完成配置,例如读入名为 Application.ini 的配置文件。然而每次请求都读入并解析 Application.ini 配置文件,显然也是不小的开销。翻查 Zend_Application::_loadConfig() 函数,我们发现参数中允... 阅读全文

posted @ 2010-02-05 19:53 analyzer 阅读(873) 评论(0) 推荐(0)

摘要: Iterator 迭代子模式提供了一种访问集合的公共机制。它能够让你以同样的方式遍历,访问和操作数据集合,如数组,文件夹,RSS集合,数据库数据集等等。Php5 其中一个与 Php4 不同的地方就在于它封装了各种iterator接口,这使得在 Php5 中实现 iterator 迭代子变得非常容易。在 Zend Framework 中也大量使用了 iterator 类接口。下面我将以Zend_Fe... 阅读全文

posted @ 2010-02-05 19:52 analyzer 阅读(434) 评论(0) 推荐(0)

摘要: 在传统的面向过程语言中经常充斥着大量的 if/else 语句。这种情况不仅容易令逻辑变得混乱,而且修改麻烦。strategy 策略模式正是为了解决此类问题而诞生的。当我们遇到一个问题,有多种解决的策略时,我们就可以用 strategy 模式。它的主要思想就是为所有策略类 subclasses 提供一个统一的固定的接口 interface ,例如一个父类 parent 。我们可以用这个接口定义各种所... 阅读全文

posted @ 2010-02-05 19:51 analyzer 阅读(481) 评论(0) 推荐(0)

摘要: 工厂模式 - factory 是一个既简单又强大的设计方法,它可以帮助我们管理大量的代码,并且易于维护。Factory - 工厂,顾名思义就是利用原料来生产产品,但是在这里我们所说的工厂模式,则是通过提供参数给生产者类 - producer ,来得到我们所需要的对象。实际上一个简单的有返回的函数 (function) 就是 factory 最简洁的表现形式。下面我们将以 Zend_Cache 模块... 阅读全文

posted @ 2010-02-05 19:50 analyzer 阅读(640) 评论(0) 推荐(0)

摘要: Zend Framework 不仅实现了完整的 MVC 结构,而且还提供了与之相辅相成的众多"配件",视图助手 View Helper 就是其中之一。试图助手顾名思义就是帮助视图 view 来完成变现层的工作,它的主要作用有两个,一个是封装 html 代码,另一个是调用 model 整合数据。在这里我将介绍如何创建自己的试图助手,并且以一个有用但却非常简单的助手图片助手 - Image Helpe... 阅读全文

posted @ 2010-02-05 19:49 analyzer 阅读(1042) 评论(0) 推荐(0)

摘要: 注册者模式 (registry) 提供了一种机制,能让你在程序中有条理的存放并管理对象 (object) ,它的主要作用是防止用户滥用全局对象 (global object) 。Registry 通常提供对象的存取,注销等方法,方便用户管理。下面来看看 Zend Framework 中 registry 的例子,这里挑选最经典的 Zend_Registry 为例 :class Zend_Regis... 阅读全文

posted @ 2010-02-05 19:49 analyzer 阅读(1242) 评论(0) 推荐(1)

摘要: 在开始之前,我有必要介绍一下Zend_Application。这是 Zend Framework 1.8 发布中的重大变更,可以说 Zend_Application 和其引入的 Bootstrap 及 Resource 概念,大大简化了应用程序的初始化组装过程,标志着 Zend Framework 真正迈向成熟。Zend_Application 提出了两个关键概念 :1. Bootstrap对于 ... 阅读全文

posted @ 2010-02-05 19:48 analyzer 阅读(1431) 评论(0) 推荐(0)

摘要: Zend Framework 中提供了好几种 MVC 异常处理方式,首先让我们回顾下:1. 默认的交由 Zend_Controller_Plugin_ErrorHandler 插件来处理。2. 通过Zend_Controller_Front::throwExceptions(true) 来处理:$front->throwExceptions(true);try { $front->di... 阅读全文

posted @ 2010-02-05 19:47 analyzer 阅读(3297) 评论(0) 推荐(0)

摘要: 如何配置 .htaccess 文件一直是困扰初学者的难题之一,我在这里特意总结了一下,希望能给初学者启示:以下有关 .htaccess 的配置兼容因虚拟主机而无权修改 apache 设置的情况。# Php settings# Php 配置# ====================<IfModule php5_module> # Adjust memory limit # 内存限制 #... 阅读全文

posted @ 2010-02-05 19:46 analyzer 阅读(1890) 评论(0) 推荐(0)

摘要: 5.模型层模型层,作为MVC模型中的底层,对于程序的作用是至关重要的。目前许多框架都带有ORM的功能。ORM就是Object Relational Mapping,就一种对象和关系数据库进行互相转换的中间层。有了这个框架,我们实现程序以不关心SQL语句的书写、索引的创建、主键和外键的关系。虽然这是非常方便的功能,但由于隐藏了底层的实现,如果出现了错误,会不知所措。所以我还是强烈自己写一个模型层框架... 阅读全文

posted @ 2010-02-05 19:00 analyzer 阅读(265) 评论(0) 推荐(0)

摘要: 0.前言本文会从搭建WAMP环境开始,描述如何开发自己的个人博客。虽然目前Wordpress已经非常完善、功能非常强大,但对于喜欢简洁的朋友来说似乎有点臃肿。对于刚刚看完PHP语法,苦于没有项目实践的朋友,本文也是一个非常好的台阶。目前PHP在Web开发方面已经非常流行。可是还有一部分开发人员对PHP的应用还是停留在ASP的阶段。直接将PHP代码和HTML代码混合在同一个文件中。这对于网站的后期维... 阅读全文

posted @ 2010-02-05 18:56 analyzer 阅读(586) 评论(0) 推荐(0)

摘要: 1程序运行参数Nginx 安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对 Nginx 进程本身进行控制的。 Nginx 的参数包括有如下几个:-c <path_to_config>:使用指定的配置文件而不是 conf 目录下的 nginx.conf 。-t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否... 阅读全文

posted @ 2010-02-05 18:40 analyzer 阅读(827) 评论(0) 推荐(0)

摘要: linux内核的编码是一种极端情况。需要清晰明朗以供全世界的开发者学习、修改,对代码的质量要求较高。相信linus大神在长期接触各种各式代码后脾气会变得更暴躁,就比如前段时间在某论坛痛斥C++。。。节选,去除不适合PHP程序员阅读的部分。如果你开发PHP程序的核心代码,比如框架,尤其建议好好思考。虽然,它和一些权威的代码规范比如discuz和zend的有所冲突,但是依然能从中受益。linux ke... 阅读全文

posted @ 2010-02-05 18:29 analyzer 阅读(240) 评论(0) 推荐(0)

摘要: 1、SQL语句过长:用表的别名,这是哥哥告诉我的。。。此外还想到用PHP的"",中间加入换行符使得SQL代码清晰。2、将常用的功能写成类来调用。这样使得程序的可重用性得到提高。3、强制规定使用环境为PHP5.这样可以使得可以使用PHP5下的功能。4、使用__autoload函数加载类。代码简洁优雅。5、mysql下没有top,可以用limit来代替。6、smarty模板的文件报错:unlink(D... 阅读全文

posted @ 2010-02-05 18:26 analyzer 阅读(200) 评论(0) 推荐(0)

摘要: 无论哪种语言,字符串操作都是一个重要的基础,往往是简单而重要。正像人说话一样,一般有形体(图形界面),有语言(print 字符串?),显然字符串能解释更多的东西。PHP提供了大量的字符串操作函数,功能强大,使用也比较简单。以下将简单的讲述它的功能和特性。弱类型PHP是弱类型语言,所以其它类型的数据一般可以直接应用于字符串操作函数里,而自动转换成字符串类型,进行处理,如:PHP:echosubstr... 阅读全文

posted @ 2010-02-05 18:25 analyzer 阅读(712) 评论(0) 推荐(0)

摘要: 例子文件:Sample.html http://www.blueprintcss.org/tests/parts/sample.html<link rel="stylesheet" href="http://chuna2.787528.xyz/blueprint/screen.css" type="text/css" media="screen, projection">这个文件将所有的C... 阅读全文

posted @ 2010-02-05 18:23 analyzer 阅读(2185) 评论(1) 推荐(1)

摘要: 今天无聊升级了新内核2.6.32.7 编译了2次都有错误,经过修改,写下无错的编译过程因为一些不确定的因数,友情提醒升级前先备份好你的系统!1.下载新内核文件程序代码cd /usr/srcwgethttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.7.tar.gztar zxvf linux-2.6.32.7.tar.gzcd linu... 阅读全文

posted @ 2010-02-05 17:57 analyzer 阅读(568) 评论(0) 推荐(0)

摘要: # curl --headwww.nginx.orgHTTP/1.1 200 OKServer: nginx/0.8.31Date: Wed, 13 Jan 2010 06:17:30 GMTContent-Type: text/htmlContent-Length: 2341Last-Modified: Mon, 11 Jan 2010 15:45:11 GMTConnection: keep-... 阅读全文

posted @ 2010-02-05 17:54 analyzer 阅读(658) 评论(0) 推荐(0)

摘要: 最佳方法在nginx.conf加入http{...server_name_in_redirect off;...}国内搜索到两种方法第一种方法用rewrite补上/if (-d $request_filename){ rewrite ^/(.*)([^/])$ /$1$2/ permanent; }第二种方法optimize_server_names off;#optimize_server_na... 阅读全文

posted @ 2010-02-05 17:53 analyzer 阅读(627) 评论(0) 推荐(0)

摘要: forum.nginx .orgRob Schultznginx专家提供的解决方案统一使用www.atans.cn访问网站atans.cn 会被重定向到www.atans.cnatans.cn/post/107/ 也会被重定向到www.atans.cn/post/107/编辑nginx.conf#这个将负责atans.cn永久重定向到www.atans.cn引用#只作99860.net转向www.... 阅读全文

posted @ 2010-02-05 17:51 analyzer 阅读(861) 评论(0) 推荐(0)