当前位置:  开发笔记 > 编程语言 > 正文

自定义php模板引擎:我终于走上了正轨吗?

如何解决《自定义php模板引擎:我终于走上了正轨吗?》经验,为你挑选了1个好方法。

因为我一直很晚才回答标记php的问题,我实际上知道答案,我想我会尝试自己提问.

我已经在php中对自定义模板引擎进行了如此多的完整重写,这么长时间以来,我以为我会征求意见.

简而言之,这是我迄今为止实施的最重要的部分:

    任何http请求都被路由到handler.php

    根据请求的URL,实例化控制器并调用该控制器上的方法.

    控制器方法必须返回IView兼容的类实例(IView定义Render()方法)

      模板引擎为每个以'serverside'结尾的命名空间执行一些xpath sprintf('//%s:*[@runat="server"]', $namespaceprefix )

      对于每个找到的标记,它查找由标识的php类$tag.localName并实例化一个并将其附加到原始模板.

      连接后,原始模板节点将被送入"ServerTag",以便正确初始化

      完全完整的IView兼容实例被分配给控制器方法中的临时变量.

    控制器要求将数据从Model类推送到视图,该视图执行一些漂亮的xpath DOM替换.

    控制器将完全填充的视图返回给main()处理程序,处理程序将呈现它.

我的模板基于xml.一个简单的模板目前看起来像:



    
    Title will be filed by the View depending on the Controller
    


    
    
    
    

www.theredhead.nl :: Test Template

Lorum ipsum dolar sit amet. blah blah blah yackadee schmackadee.

目前,这个输出(包括破碎的缩进):




    
    Welcome to my site
    
    
    


    
    
    
    

www.theredhead.nl :: ModelViewController

Lorum ipsum dolar sit amet. blah blah blah yackadee schmackadee.

我只是触及了这里的冰山一角,是的,一旦我对功能感到满意,我将从输出中删除未使用的xmlns属性

我的mvc和核心框架目前只有200多个类

我知道现有的解决方案可以做类似的事情,但我想建立自己的解决方案.

所以最大的问题是:你对必备功能有任何意见吗?

PS如果有人对完整的源代码感兴趣,请发表评论,当我达到合理的开发人员可用性水平时,我将在我的网站上提供.



1> SchizoDuckie..:

为什么不使用PHP作为模板系统.PHP 模板系统.

只是在HTML模板中转储有什么问题?您可以使用foreach循环等.只需确保在无法访问任何您不想要的变量的范围内运行它.

自从我的Java/Struts噩梦以来,我对这样过于复杂的模板系统有着深深的仇恨.在更改所需的一项内容之前,您必须深入了解命名空间,xpath,自定义命名空间和所有这些内容.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有