开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

Zend Framework 1.5 即将发布!

正如许多人所知,ZendFramework1.5.0即将发布……哎呀,它甚至可能在您阅读本文时发布。有大量值得研究的新功能,但我将在此处列出一些我自己最喜欢的功能-我一直在研究或使用的功能。

Zend_Layout和Zend_View增强功能

多年来,我一直在使用“两步查看”模式,它几乎是每个项目的第二天性来设置它。随着Zend_Layout的发布,Ino不再需要设置我自己的插件并考虑它是如何工作的——我可以创建我的网站布局并开始工作。

但是Zend_Layout本身并不是革命性的。革命性的是Zend_Layout与各种新视图助手的组合:部分、占位符和操作。特别是,占位符越来越多地出现在我的工具箱中。

例如,我在我的应用程序中大量使用新的headScript()headLink()查看助手。它们允许我为我的HTML头部部分指定javascript和CSS包含……并且还可以防止我意外地多次包含同一个文件。除此之外,作为占位符,它们还可以捕获任意内容以供以后包含,我现在可以为特定视图创建我需要的javascript在该视图中,并轻松地将其包含在文档中。这有助于我将UI逻辑保持在应用程序附近,同时仍将其置于文档中的适当位置。

Zend_Form

老实说,大约在编写Zend_Form的一半时,我很认真地想知道是否需要一个表单组件;在您的模型中直接使用Zend_Filter_Input,并使用Zend_View助手简单地编写您的表单似乎非常简单且轻松。

不过,从那时起我就有机会使用Zend_Form了,我非常感谢这个组件。有了它,我可以将关于一个元素的所有信息——它应该如何验证、我想要的任何预过滤、我想与之关联的任何元数据,以及关于我想要它如何呈现的提示——全部放在一个地方。虽然它看起来像是业务逻辑和表示逻辑的危险组合,但事实并非如此。显示逻辑自包含在用于呈现元素的装饰器中——甚至不是必需的。但是让它们存在也意味着我的视图可以比过去简单,我的控制器和/或模型逻辑也是如此——我可以从表单中提取所有信息,然后简单地使用它。

例如,考虑这个控制器操作:

<?php
class FooController extends Zend_Controller_Action
{
    public function formAction()
    {
        $request = $this->getRequest();
        $form    = $this->getForm(); // helper method to pull in form

        if (!$request->isPost()) {
            // display form
            $this->view->form = $form;
            return;
        }

        if (!$form->isValid($request->getPost())) {
            // form not valid; re-display
            $this->view->form = $form;
            return;
        }

        // Valid form; save data
        $this->getModel()->save($form->getValues());
        $this->_helper->redirector('success');
    }
}
?>

以及显示表单的相关视图脚本:

<h2>Please fill out the form</h2>
<?= $this->form ?>

说真的——虽然可能有相当多的代码来设置表单,但它是独立的,并导致一些非常短的方法和视图——使应用程序逻辑的其余部分更清晰、更容易阅读。我喜欢简洁易读的代码。

Zend_Search_Lucene

当然,这个组件已经存在很长时间了,但是亚历克斯用它做了一些不可思议的事情。您现在可以以编程方式构建查询,并支持通配符搜索。此外,您现在可以就地修改索引,而无需重新构建——这意味着随着您网站的增长,您不必担心为网站编制索引会消耗越来越多的资源。

Zend_Db_Table改进

一直困扰我的一件事是,我经常想做一个包含来自Zend_Db_Table的JOIN的查询……但它不允许这样做。这导致拥有返回数组的自定义方法,或添加返回自定义ResultSets的逻辑……所有这些都很乏味。Simon在过去几个月里投入了大量时间来解决这些令人头疼的问题。您现在可以返回包含联接的只读结果集,让您可以像访问一个行集一样访问您的JOIN行集仅包含当前表的数据。

此外,无需手动构建SQL,或使用Zend_Db_Select构建它然后将其转换为字符串,Simon还添加了创建Zend_Db_Select的能力直接在您的表类中,并将它们传递给执行查询的任何方法。这种改进也将节省我的时间—特别是在结合返回JOINedResultSets的能力时。

上下文切换和REST

我已经玩了一段时间的东西是能够通过简单地更改请求中的参数来更改viewcontext。例如,除了给定操作的HTML之外,您可能还想返回XML或JSON。我为1.5.0添加的一件事是ContextSwitch操作帮助程序,它有助于自动执行此操作。

启用操作ContextSwitch后,您可以请求操作并添加具有所需上下文的format参数:/foo/bar/format/xml。检测参数,根据允许的上下文列表检查参数,然后,如果可用,将呈现一个单独的视图,并更改响应标头以匹配格式。

在上面的示例中,/foo/bar/format/xml,这意味着text/xml</的响应Content-Type标头code>将被返回,而不是呈现foo/bar.phtml视图脚本,foo/bar.xml.phtml脚本将被呈现。这使您可以针对不同的上下文使用单独的显示逻辑。

除了上下文切换之外,应一些声乐贡献者的要求,我在Zend_Controller_Request中添加了多种方法以允许检测各种HTTP请求类型(HEAD、GET、POST、PUT、DELETE等),以及检索原始发布数据。这些与上下文切换相结合,将允许您轻松地将REST服务构建到现有的MVC应用程序中。

结论

1.5.0中还有更多功能。在未来几天访问框架站点以了解所有新功能,并下载新版本来尝试一下!

未经允许不得转载:我爱分享网 » Zend Framework 1.5 即将发布!

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏