【问题标题】:Call to undefined method DboSource::connect() in ***/web/cakephp/lib/Cake/Model/Datasource/DboSource.php on line 260在第 260 行调用 ***/web/cakephp/lib/Cake/Model/Datasource/DboSource.php 中未定义的方法 DboSource::connect()
【发布时间】:2016-02-24 20:00:52
【问题描述】:

我正在尝试将 Cake PHP 应用程序从一台服务器迁移到另一台服务器。我遇到的问题之一是标题中提到的错误。

( ! ) 致命错误:调用未定义的方法 DboSource::connect() in ***/web/cakephp/lib/Cake/Model/Datasource/DboSource.php 在第 260 行

第 260 行读取

if ($autoConnect) {
    $this->connect();
}

我真的不明白这里出了什么问题.... DboSource 及其父类中似乎没有 connect() 方法,那么为什么首先调用它呢?

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    您不能直接使用DboSource 类。您需要使用或创建子类。

    DboSource 的构造函数是使用parent::__construct() 从子类调用的。例如,Mysql 类,DboSource 的子类之一,具有connect() 方法。调用connect()就是为了这个目的。

    在这种情况下,通常DboSource 类应声明为abstract 并应具有抽象connect() 方法。但它不能再改变了。如果 CakePHP 团队添加该方法,它可能会破坏用户空间代码。因为 connect() 方法可能会通过在子类中使用 __call() 来实现,例如。

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 - From Review
    • @sebastianbrosch 我已经更新了我的答案。也许,我误读了这个问题吗?我以为他问“为什么在这里调用 connect() 方法?”。所以我回答“它是从子类中调用的。”。
    • 是的,但这也可以是评论。但是现在您已经添加了解释并将您的答案更改为一个好的答案! +1
    • @sebastianbrosch 我学到了。感谢您的评论,很抱歉浪费您的时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 2012-08-15
    相关资源
    最近更新 更多