Posts Tagged ‘架构’

29th
十一月

PHP:浅析Savant模板引擎机制
马克龙 发布于: 2009年11月29日 开发与应用 标签:, , , 评论 (0)

要说到优秀的PHP模板引擎,PHPer响应最多的一定是Smarty,它使用自己的模板语言,所以需要将模板“编译”成PHP。

Savant也是面向对象的PHP模板引擎,但它使用PHP本身来作为它的模板语言,不需要“编译”,代码量更少、执行速度更快。Savant只包含了模板引擎的最基本功能(如数据格式化功能),但它有一个面向对象的模板插件系统和输出过滤器,可以让你快速为它新增新的行为。我想,这是Cal Henderson在《构建可扩展的Web站点》一书中推荐Savant的理由。

最新版的是Savant3,其使用及其简单、清晰,使用Demo见:http://phpsavant.com/docs/,API见:http://phpsavant.com/api/Savant3/

Savant3的文件目录结构如下

Savant3.php //包含Savant3类
Savant3
    resources //此文件夹存放插件和过滤器
        Savant3_Filter_trimwhitespace.php //trimwhitespace过滤器,其类Savant3_Filter_trimwhitespace继承了Savant3_Filter
        Savant3_Plugin_ahref.php //ahref插件,其类Savant3_Plugin_ahref继承了Savant3_Plugin,下同
        Savant3_Plugin_date.php //date插件
        Savant3_Plugin_htmlAttribs.php //htmlAttribs插件
        Savant3_Plugin_image.php //image插件
    Error.php //包含错误类Savant3_Error
    Exception.php //包含异常类Savant3_Exception
    Filter.php //包含抽象过滤器类Savant3_Filter,规定了编写“官方”过滤器须要遵循的接口。但函数或不是Savant3_Filter的子类方法也可以作为过滤器。
    Plugin.php //包含抽象插件类Savant3_Plugin,规定了编写插件须要遵循的接口

(全文…)

9th
十一月

Architecture 书签 on delicious
马克龙 发布于: 2009年11月9日 开发与应用 标签: 评论 (0)

(全文…)

6th
九月

Bottom-Up Versus Top-Down Design
马克龙 发布于: 2009年09月6日 开发与应用 标签:, , 评论 (0)

Bottom-Up design(自底向上的设计)和 Top-Down Design(自顶向下的设计)是软件开发领域中两种对立的设计方法。前者始于并长期盛行于面向过程式开发领域,而后者是面向对象开发领域中备受推崇的设计方法。但这两种设计方法绝非软件开发领域独有的方法论,而是更早地出现并广泛应用在了其他领域,如建筑学、工业设计等,是一个很广泛的方法论。

Bottom-Up design在没有完全明确需求的情况下,就从局部出发直接进行编码、最后“粘合”而成一个整体,轻设计而重编码,能灵活应对需求变化,适用于人员投入少、简单快速的小项目。极限编程正好反映了这种思想,其拥趸坚持“系统开发过程的产物中真正重要的只有编码”。

Top-Down Design从整体系统角度着重考虑设计环节,由上而下有机地将系统分化为多个子系统、又子系统分化成多个组件,直至分化出明确的编码接口才开始编码。Top-Down Design在设计前需要明确需求,在设计阶段可以不断验证实现设计的可行性。但经过验证的、良好的设计可以有效管理复杂度,降低Bottom-Up design中在后期“推倒重建”的风险,能让整个开发团队同步进行,适用于复杂庞大的团队项目。

(全文…)