[置顶] [原创] PHP框架编写123 总目录
17:40 , P.Qingliang
这是一项大的工程, 水平所限难免会有错误, 欢迎各位朋友指正.
声明: 这个系列的文章包含我学习php的一些经验和总结, 更多的是探讨与深入.
内容:
学习到今天的php,很多东西觉得需要整理一下。这个系列的文章是我自我检验关于设计模式和框架的一些基本想法,很多地方都是分析fleaphp和zf得到的结果,当然也借鉴了其他的一些框架的优秀思想。
这里是汇总目录, 便于查阅:
目录:
1. php项目开发方式
2.web中的 MVC模式 --- PHP框架编写123 [2008-06-27更新]
3. 一些基本设定和框架总体设计---PHP框架编写123 [2008-06-28更新]
4.设计分发器(Dispatcher)--- PHP框架编写123 [2008-07-03更新]
声明: 这个系列的文章包含我学习php的一些经验和总结, 更多的是探讨与深入.
内容:
学习到今天的php,很多东西觉得需要整理一下。这个系列的文章是我自我检验关于设计模式和框架的一些基本想法,很多地方都是分析fleaphp和zf得到的结果,当然也借鉴了其他的一些框架的优秀思想。
这里是汇总目录, 便于查阅:
目录:
1. php项目开发方式
2.web中的 MVC模式 --- PHP框架编写123 [2008-06-27更新]
3. 一些基本设定和框架总体设计---PHP框架编写123 [2008-06-28更新]
4.设计分发器(Dispatcher)--- PHP框架编写123 [2008-07-03更新]
Jun
14
2008
[置顶] PHP开发群
01:10 , P.Qingliang
群号:17588007
暗号:我要php
暗号:我要php
类别:站点公告 | | 0 条评论, 461 次阅读
Apr
9
2008
/*************************************************************
** 作者:P.Qingliang (P.Qingliang at msn.com)
** 创建时间: 2008-8-6
** 声明:笔记不是教程,这只是我系统学习算法的记录而已,如有错
** 误,欢迎指正。
**
*************************************************************/
检测算法的时间效率往往是在大规模的输入(n)的情况下进行,当n足够大时,研究算法的运行时间就趋向于研究算法的渐进效率了,因为我们没有必要进行过于精确的计算。在计算机中,有几种标准的方法用于简化算法的渐进分析。
渐进符号
用以表示算法的渐进时间记号是域为自然数的函数。有时域的范围可以适当的扩充以获得更广的益处。
三种渐进符号:ΘΩΟ
f(n) = Θ(g(n)) 表示的是这样的一个集合:存在c1,c2,当n>n0时,有0 < c1g(n)
(图来自《算法导论》)
它实际上是确定了一个算法的运行时间渐进上界和渐进下界。
对应的Ω用于确定算法的渐进下界(最佳运行时间),Ο用于确定算法的渐进上界(最坏运行时间)
需要注意的是,实际上运行时间并非是n的函数,对于某个特定的n来说,运行时间与具体的输入有关,当我们用渐渐符号来表示算法运行时间时,实际上是在某个特定条件约束下说明的。
方程中的渐进符号
方程中的渐进符号实际上相当于一个匿名函数f(n),用于表示我们不关注的部分,因为我们没有必要写出我们不关心而又繁琐的某些细节部分(如低阶项)。
对于非精确上界渐进用符号o(g(n))表示,例如2n=o( ),而精确上界渐进则用符号Ο(g(n))表示,例如 .
w与Ω的关系同O与Ο。
** 作者:P.Qingliang (P.Qingliang at msn.com)
** 创建时间: 2008-8-6
** 声明:笔记不是教程,这只是我系统学习算法的记录而已,如有错
** 误,欢迎指正。
**
*************************************************************/
检测算法的时间效率往往是在大规模的输入(n)的情况下进行,当n足够大时,研究算法的运行时间就趋向于研究算法的渐进效率了,因为我们没有必要进行过于精确的计算。在计算机中,有几种标准的方法用于简化算法的渐进分析。
渐进符号
用以表示算法的渐进时间记号是域为自然数的函数。有时域的范围可以适当的扩充以获得更广的益处。
三种渐进符号:ΘΩΟ
f(n) = Θ(g(n)) 表示的是这样的一个集合:存在c1,c2,当n>n0时,有0 < c1g(n)
(图来自《算法导论》)
它实际上是确定了一个算法的运行时间渐进上界和渐进下界。
对应的Ω用于确定算法的渐进下界(最佳运行时间),Ο用于确定算法的渐进上界(最坏运行时间)
需要注意的是,实际上运行时间并非是n的函数,对于某个特定的n来说,运行时间与具体的输入有关,当我们用渐渐符号来表示算法运行时间时,实际上是在某个特定条件约束下说明的。
方程中的渐进符号
方程中的渐进符号实际上相当于一个匿名函数f(n),用于表示我们不关注的部分,因为我们没有必要写出我们不关心而又繁琐的某些细节部分(如低阶项)。
对于非精确上界渐进用符号o(g(n))表示,例如2n=o( ),而精确上界渐进则用符号Ο(g(n))表示,例如 .
w与Ω的关系同O与Ο。
Aug
7
2008
/*************************************************************
** 作者:P.Qingliang (P.Qingliang at msn.com)
** 创建时间: 2008-8-5
** 声明:笔记不是教程,这是我系统学习算法的记录而已
**
*************************************************************/
算法的定义
算法(Algorithm)是指在有限步骤内解决问题的一组明确定义的规则,通俗的说,就是计算机解决问题的过程。
算法的特点
有穷性、确切性、输入、输出、可行性
即使是错误的算法,当其错误率在可接受范围内时也就是认为是“正确”的算法。算法的描述一般是伪代码(类c,类c++,类pascal等等)来进行。
分析算法
算法分析的重要内容:算法的复杂性,包括空间复杂性和时间复杂性,一般只讨论时间复杂性。所谓时间复杂性,简单的说就是指在一定的输入规模下算法执行的时间效率。通常我们分析算法时假定指令是一条接着一条的执行的,而没有并发操作,也就是所谓的RAM模型。
** 作者:P.Qingliang (P.Qingliang at msn.com)
** 创建时间: 2008-8-5
** 声明:笔记不是教程,这是我系统学习算法的记录而已
**
*************************************************************/
算法的定义
算法(Algorithm)是指在有限步骤内解决问题的一组明确定义的规则,通俗的说,就是计算机解决问题的过程。
算法的特点
有穷性、确切性、输入、输出、可行性
即使是错误的算法,当其错误率在可接受范围内时也就是认为是“正确”的算法。算法的描述一般是伪代码(类c,类c++,类pascal等等)来进行。
分析算法
算法分析的重要内容:算法的复杂性,包括空间复杂性和时间复杂性,一般只讨论时间复杂性。所谓时间复杂性,简单的说就是指在一定的输入规模下算法执行的时间效率。通常我们分析算法时假定指令是一条接着一条的执行的,而没有并发操作,也就是所谓的RAM模型。
>> 阅读全文
类别:问题求解与算法 | | 0 条评论, 7 次阅读
Aug
6
2008
PHP变量安全小设置
05:36 , Model.King
Jul
18
2008
“人无信则不立“想到的
00:39 , Model.King
Jul
17
2008
如何设计分发器(Dispatcher)
有了对MVC模式的简单认识,我们就可以正式开始框架的设计了(参见http://www.nd21.com/read.php/61.htm)。
从上面链接的示范代码中我们可以大致的了解分发器的职责:解析web端请求(GET方式)为某个控制的动作,也就是简单的路由功能。其次,分发器还需要将更多的请求参数传递给控制器,能够提供出错处理(当控制器或者控制器的方法不存在时),能够进行重定向等等功能。我们可以根据这些定义出分发器的基本框架:
有了对MVC模式的简单认识,我们就可以正式开始框架的设计了(参见http://www.nd21.com/read.php/61.htm)。
从上面链接的示范代码中我们可以大致的了解分发器的职责:解析web端请求(GET方式)为某个控制的动作,也就是简单的路由功能。其次,分发器还需要将更多的请求参数传递给控制器,能够提供出错处理(当控制器或者控制器的方法不存在时),能够进行重定向等等功能。我们可以根据这些定义出分发器的基本框架:
>> 阅读全文
Jul
3
2008
Jun
28
2008
PHP页面静态化的两种方式
11:05 , P.Qingliang
PHP页面静态化是大多数PHP程序员耳熟能详、随手可写的功能了,在这里不讨论如何生成静态页面的细节,而是考虑:将静态缓存功能作为系统的哪个部分的结构来实现(基于MVC模式,如果对MVC不了解,对于下面的内容的理解可能有困难)。
在我的总结有两种主要的方式,其他的还没有发现,如果你有第三种可行的方案,请给我发一份示意代码,谢谢。(代码使用PHPLIB template示范)
第一种方式:由控制器来调用单独的缓存类。在这个时候缓存类是一个单独的类,与模板引擎相对独立,在一个请求开始的时候,缓存类即被调用,并进行一些相关的缓存操作。这一工作甚至可以直接在调度器中完成(如果存在调度器dispatcher的话)。下面给出一个简单的代码示范(只有框架):
在我的总结有两种主要的方式,其他的还没有发现,如果你有第三种可行的方案,请给我发一份示意代码,谢谢。(代码使用PHPLIB template示范)
第一种方式:由控制器来调用单独的缓存类。在这个时候缓存类是一个单独的类,与模板引擎相对独立,在一个请求开始的时候,缓存类即被调用,并进行一些相关的缓存操作。这一工作甚至可以直接在调度器中完成(如果存在调度器dispatcher的话)。下面给出一个简单的代码示范(只有框架):
>> 阅读全文
Jun
26
2008
[小备忘]接口与实现类
14:53 , P.Qingliang
接口用于给类附加特殊的行为信息,可以避免在类中混合一些不属于领域类的方法。
PHP中,接口定义如下:
PHP中,接口定义如下:
Jun
24
2008




