Я пытаюсь перенести приложение Cake PHP с одного сервера на другой. Одна из проблем, с которой я столкнулся, - это ошибка, упомянутая в заголовке.

(!) Неустранимая ошибка: вызов неопределенного метода DboSource :: connect () в *** / web / cakephp / lib / Cake / Model / Datasource / DboSource.php в строке 260

Строка 260 гласит

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

Я действительно не понимаю, что здесь происходит ... похоже, что в DboSource и его родительских классах нет метода connect (), так почему он вообще вызывается?

1
Ueli Hofstetter 24 Фев 2016 в 23:00

1 ответ

Лучший ответ

Вы не можете использовать класс DboSource напрямую. Вам нужно использовать или создать подкласс.

Конструктор DboSource вызывается из подкласса с помощью parent::__construct(). Например, класс Mysql, один из подклассов DboSource, имеет метод connect(). Звонок connect() предназначен для этой цели.

В таких случаях обычно класс DboSource должен быть объявлен как abstract и должен иметь абстрактный метод connect(). Но это уже не может быть изменено. Если команда CakePHP добавит метод, это может нарушить код пользовательского пространства. Метод Becuase connect() может быть реализован, например, с помощью __call() в подклассе.

2
Kurita Takashi 25 Фев 2016 в 11:28
1
Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его сообщением - вы всегда можете комментировать свои собственные сообщения, и как только у вас будет достаточно репутации, вы сможете комментировать любое сообщение. - Из отзыва
 – 
Sebastian Brosch
25 Фев 2016 в 10:09
Я обновил свой ответ. Может я неправильно прочитал вопрос? Я думал, он спросил: «Почему здесь вызывается метод connect ()?». Я ответил: «Он вызывается из подкласса».
 – 
Kurita Takashi
25 Фев 2016 в 11:15
Да, но это тоже может быть комментарий. Но теперь вы добавили объяснение и изменили свой ответ на хороший ответ! +1
 – 
Sebastian Brosch
25 Фев 2016 в 11:45
Я узнал. Спасибо за обзор, и мне очень жаль, что я трачу ваше время.
 – 
Kurita Takashi
25 Фев 2016 в 11:47