Я пытаюсь перенести приложение Cake PHP с одного сервера на другой. Одна из проблем, с которой я столкнулся, - это ошибка, упомянутая в заголовке.
(!) Неустранимая ошибка: вызов неопределенного метода DboSource :: connect () в *** / web / cakephp / lib / Cake / Model / Datasource / DboSource.php в строке 260
Строка 260 гласит
if ($autoConnect) {
$this->connect();
}
Я действительно не понимаю, что здесь происходит ... похоже, что в DboSource и его родительских классах нет метода connect (), так почему он вообще вызывается?
1 ответ
Вы не можете использовать класс DboSource
напрямую. Вам нужно использовать или создать подкласс.
Конструктор DboSource
вызывается из подкласса с помощью parent::__construct()
. Например, класс Mysql
, один из подклассов DboSource
, имеет метод connect()
. Звонок connect()
предназначен для этой цели.
В таких случаях обычно класс DboSource
должен быть объявлен как abstract
и должен иметь абстрактный метод connect()
. Но это уже не может быть изменено. Если команда CakePHP добавит метод, это может нарушить код пользовательского пространства. Метод Becuase connect()
может быть реализован, например, с помощью __call()
в подклассе.
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.