Zend framework 在zend(1.11)中加载替代类实现

Zend framework 在zend(1.11)中加载替代类实现,zend-framework,zend-form,Zend Framework,Zend Form,是否可以使用自动加载器覆盖现有的类定义,使加载器首先找到我的代码并加载它而不是zend库代码?这样我就可以编写自己的Zend\u View\u Helper\u FormText,并让所有文本Form\u元素自动获取我的版本,而不是默认版本?更新: 所以我想确保我是正确的,因为自从我使用ZF以来已经有一段时间了。以下内容对我来说是开箱即用的 在LIBRARY\u PATH/YourNamespace/Application/Resource/View中,使用“setHelperPaths”方法创

是否可以使用自动加载器覆盖现有的类定义,使加载器首先找到我的代码并加载它而不是zend库代码?这样我就可以编写自己的
Zend\u View\u Helper\u FormText
,并让所有文本
Form\u元素自动获取我的版本,而不是默认版本?

更新:

所以我想确保我是正确的,因为自从我使用ZF以来已经有一段时间了。以下内容对我来说是开箱即用的

LIBRARY\u PATH/YourNamespace/Application/Resource/View
中,使用“setHelperPaths”方法创建自定义
YourNamespace\u Application\u Resource\u View
,或在配置中调用它的任何方法

class YourNamespace_Application_Resource_View extends Zend_Application_Resource_View
{
   public function setHelperPaths($paths){
     if(!empty($paths)){
       $view = $this->getView();
       foreach($paths as $ns => $path) {
          $view->addHelperPath($path, $ns);
       }
     }
   }
}
然后在配置中执行以下操作:

all:
  pluginPaths:
    'YourNamespace_Application_Resource_': <?php echo LIBRARY_PATH ?>/YourNamespace/Application/Resource

  resources:
    view:
      helperPaths:
        'YourNamespace_View_Helper': <?php echo LIBRARY_PATH ?>/YourNamespace/View/Helper
全部:
插件路径:
'YourNamespace\u Application\u Resource':/YourNamespace/Application/Resource
资源:
视图:
帮助路径:
'YourNamespace\u View\u Helper':/YourNamespace/View/Helper
显然,这并不能完全取代您已经配置的任何内容。。。除此之外。此外,我在Zend_工具中设置了项目生成器,以使用YAML(带有sfYaml)作为配置格式,因此如果使用INI或XML,则需要进行适当的转换

然后,您只需使用与要覆盖的zend帮助器相同的名称创建cutsom帮助器。我在测试中使用了以下示例:

// File in LIBRARY_PATH/YourNamespace/View/Helper/FormText.php
class YourNamespace_View_Helper_FormText extends Zend_View_Helper_FormText
{
   public function formText($name, $value = null, $attribs = null)
   {
      $xhtml = parent::formText($name, $value, $attribs);
      $xhtml .= '<br /> <pre>'.__CLASS__.'</pre>';
      return $xhtml;
   }
}
//库中的文件\u PATH/YourNamespace/View/Helper/FormText.php
类YourNamespace\u View\u Helper\u FormText扩展Zend\u View\u Helper\u FormText
{
公共函数formText($name,$value=null,$attribs=null)
{
$xhtml=parent::formText($name、$value、$attribs);
$xhtml.='
.\uuuuuu类\uuuuuuuu'; 返回$xhtml; } }
然后它自动工作了。如果它对你不起作用,那么可能是其他因素导致了它的问题



为什么不在自己的“名称空间”(例如,
Someguy\u View\u Helper\u FormText
)中创建自己的实现,然后加载它呢

我的印象是,如果它位于不同的名称空间中,那么zend不会尝试加载它,因为它正尝试加载zend_View_Helper_FormText,而不仅仅是任何名称空间_View_Helper_FormText。在my Bootstrap.php中执行$view->setHelperPath()似乎不起作用,对于Someguy名称空间或使用Zend名称空间。然后您可能需要覆盖
Zend\u Form\u Decorator\u ViewHelper
,这样它就会拉取您的助手。基本上,我在这里得到的是,用自己的实现替换
Zend*
是不好的形式,相反,您应该在自己的命名空间中创建它,然后适当地加载它。根据您要替换的内容,重载默认值可能是一项乏味的任务,或者是一项快速而简单的任务,但以错误的方式执行它只是一种不好的形式(没有双关语的意思,哈哈)。我希望它位于我自己的命名空间中,但似乎没有任何方式可以自动加载它?我只想用一个不会破坏输出的视图替换默认的View\u Helper\u FormText,而不必在整个应用程序中的每个表单的每个元素中手动执行。这无关紧要。Zend_View_Helper_FormText生成的输出不合适。我编写了一个替换的_View _Helper _FormText来生成所需的输出。我就是不知道如何用我的版本覆盖默认的Zend_View_Helper_FormText。