我对PHP框架的一些看法

在去年的时候发过一篇对与Request的理解,这个是整个框架中的一小部分。现在php的框架众多,有直接用C实现的yaf;用php语言实现的框架就更多了,例如cakephp,yii,thinkphp,zendframework等等,举不胜举。以前我写过一个小型的PHP框架Suara,现在仍在公司的项目中使用着,但是我一直想把php5.6之前的新特性融合进去,重新对框架进行开发。这时候就遇到第一个难事,如何下手。看过一些stackoverflow的文章,面对PHP框架所需要的功能,有一些疑惑。我们到底需要给予一个框架怎么样的功能?

抛开PHP,我们可以看下Python,其中web.py,就是一个非常好的例子,在众多框架中,是最简单的,只简简单单的提供了router、view、model、controller和wscgi。而其他那些繁杂的功能,全部用使用者或者插件来实现。这个应该最容易上手的一个web框架,只要有一些python语言的基础,并且看一下文档,你就能开发出你所需要的网站。这是我向谈论的第一点:易用性。同样在python中还有flask。在php中我却没有发现,都需要去阅读繁杂的初学者文档,才能一步一步完成。当然,你服务器上只要有php和apache,写个php文件就能成为网站,你可以称它最快速的,我也没什么可以说的了。

第二点,功能性。作为一个框架,所提供的功能的多少,就表现出该框架有多么的强大和方便。虽然这些框架在第一次上手有那么一点苦难,但是在后续开发中,需要一些功能的时候,就显得异常的方便。比如需要一个mail service,一些框架在底层已经完成了实现,而做为网站开发者,只需要对照着框架的文档,写一些配置文件,就能使用。

第三点,性能。众所周知,越强大的框架,所需要占用的内存是直线上升的。这里需要分成两点来说,如果只是用php输出一个”Hello world”。那么直接写php文件的性能肯定是比框架要来的好,快的多,并发量也多。但是如果是查询一个数据然后显示在页面上,那么直接写php上的不一定就有框架来的好了,毕竟框架自身有cache,防dos等等功能。

因此,结合上面的三点,要写一个框架,具体需要看它应用的场景,只有最最符合使用场景的框架才是好框架。

除去router、controller、model和view之外,框架中还有一些其他的常见功能:

  1. Autoload自动加载, 这个是在框架中最为核心的,免去了使用include,require引用。若结合namespace,引用与载入就非常的方便。
  2. Exception异常处理
  3. Log 日志记录
  4. Cache 缓存处理,主要是file、redis、memcache
  5. 邮件

一个框架,需要你很多很多知识,以及丰富的开发经历,才能对框架有一个全局控制。

Leave a Comment

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: