代码之家  ›  专栏  ›  技术社区  ›  Polsonby

在PHP5.1.6上运行Zend Framework-ksort()的修补程序或修复程序?

  •  4
  • Polsonby  · 技术社区  · 14 年前

    我在google上搜索了一下,现在意识到这是PHP的版本。我没有意识到ZF对PHP5.2.4有最低要求,对HeadLink的调用似乎导致了致命错误“调用未定义的方法Zend\u View\u Helper\u Placeholder\u Container::ksort()”:

    PHP Fatal error:  Call to undefined method Zend_View_Helper_Placeholder_Container::ksort() in /library/ Zend/View/Helper/HeadLink.php on line 321
    

    客户端不会升级他们的PHP;我不想在没有ZF的情况下重写应用程序,我也不想将ZF降级到一个非常早的版本。

    有什么建议欢迎

    非常感谢

    编辑:正如我在下面的评论中所说的,我预计很多人以前都遇到过这个问题,并且会继续这样做,因为RHEL5将在未来一段时间成为企业环境中的标准。我希望找到一个现有解决方案的链接,而不是从头开始设计一个。

    更新:我在接受的答案中使用了链接到的修补程序,它为我解决了问题。

        /** 
     * Sort the array by key 
     * 
     * @return array 
     */ 
    public function ksort() 
    { 
        $items = $this->getArrayCopy(); 
        return ksort($items); 
    }
    

    还有一个问题;由Zend\u View\u Helper\u Doctype中的字符串转换引起的PHP通知。将此函数与上面和下面的类似函数进行比较,这似乎是库中的一个错误

    public function isHtml5() {
        return (stristr($this->doctype(), '<!DOCTYPE html>') ? true : false);
    }
    

    更改为:

    public function isHtml5() {
        return (stristr($this->getDoctype(), '<!DOCTYPE html>') ? true : false);
    }
    

    修补库本身是我通常做的最后一件事,但在这种情况下,它让我摆脱了困境。我们将确保在repo中对补丁进行版本控制,并为将来的开发人员提供文档。

    2 回复  |  直到 14 年前
        1
  •  6
  •   Naktibalda    14 年前

    我今天也有同样的问题。 我找到了解决办法 blog post

    在/Zend/View/Helper/Placeholder/Container/Abstract.php中添加以下代码段:

    /**
    * Sort the array by key
    *
    * @return array
    */
    public function ksort()
    {
        $items = $this->getArrayCopy();
        return ksort($items);
    } 
    
        2
  •  2
  •   deceze    14 年前

    Zend_View_Helper_Placeholder_Container Zend_View_Helper_Placeholder_Container_Abstract ArrayObject::ksort . 比如:

    class CompatibilityArrayObject extends ArrayObject {
        public function ksort () {
            // here be dragons
        }
    }
    
    
    abstract class Zend_View_Helper_Placeholder_Container_Abstract
    extends CompatibilityArrayObject {
        ...
    }
    

    你不知道还有多少问题。如果需求是PHP5.2.4,那么应该在上面运行它。