3

我是 Zend 框架的新手,并试图获得有关代码可重用性的一些见解。我肯定知道模块,但对于模块应该包含哪些功能以及不应该包含哪些功能似乎有点不确定。

我要完成的工作:

1)拥有可重复使用的小程序/小部件/插件(无论您如何称呼它们),可以简单地插入任何站点,在布局或视图中执行此操作:

<?php echo $this->contactform;?>

或者在视图中:

<?php echo $this->layout()->blog;?>

我会称他们为分机。所以基本上是你在 Joomla/WordPress/Concrete5 模板中看到的。

2)与该特定扩展相关的所有代码都应位于其单独的目录中。

3)我们应该能够只为某些需要的模块/控制器输出扩展。如果不显示,则不应不必要地渲染它们。

4) 每个扩展可以在页面上输出多个内容区域。

您是否使用了布局合理的结构/方法?

4

1 回答 1

6

听起来您需要研究view helpers。View helpers 可以很简单,例如返回 App 版本号,也可以很复杂,例如将 html 添加到多个占位符。例如:

布局.phtml:

<h1><?php echo $this->placeholder('title'); ?>
<div class="sidebar">
    <?php echo $this->placeholder('sidebar'); ?>
</div>
<div class="content">
    <?php echo $this->layout()->content; ?>
</div>

在您的视图脚本 foo.phtml 中,例如:

<?php
    $this->placeholder('title')->set('Hello World!');
    $this->placeholder('sidebar')->set('Hello World!');
?>
<h1>Bar Bar!</h1>

现在,如果您希望能够一遍又一遍地重用它,您可以这样做:

<?php
class Zend_View_Helper_MyHelper extends Zend_View_Helper_Abstract
{
    public function myHelper()
    {
        $this->view->placeholder('title')->set('Hello World!');
        $this->view->placeholder('sidebar')->set('Hello World!');
        return '<h1>Bar Bar!</h1>';
    }
}

现在,将 foo.pthml 中的代码替换为:

<?php
echo $this->myHelper();

foo.phtml 输出的两个示例:

你好世界!

你好世界!

酒吧酒吧!

当然,这是一个非常简化的示例,但我希望这有助于为您指明正确的方向。快乐黑客!

于 2011-03-02T21:43:52.373 回答