Я использую elFinder для управления активами веб-сайта, и его функциональность по умолчанию прекрасно работает; однако мне нужно добавить некоторую дополнительную логику к нескольким функциям PHP, которые находятся на одном из моих контроллеров.
Место, где я хотел бы добавить логику <elfinder_Dir>/PHP/elFinderVolumeLocalFileSystem.php
конкретно в функции _unlink($path)
перед тем, как файл будет фактически удален, я хотел бы вызвать другой класс, чтобы уничтожить записи базы данных для этого ресурса.
Оригинальная функция выглядит так:
protected function _unlink($path) {
return @unlink($path);
}
Когда я пытаюсь добавить код, как показано ниже:
protected function _unlink($path) {
var_dump($path);
return @unlink($path);
}
ИЛИ ЖЕ
//top of file...
use controllers\ResourceManager;
//OR
//include <pathToResourceManager>
//...
protected function _unlink($path) {
ResourceManager::delteFromDB();
return @unlink($path);
}
Я получаю это предупреждение на экране:
Я также заметил, что при получении этого сообщения в заголовке на вкладке «Сеть» отображается тип содержимого заголовка ответа: text/html
вместо application/json
как и ожидалось частью JS elFinder.
Почему изменяется заголовок Content-type, когда я добавляю собственную логику?
Есть ли лучший способ добавить эту функциональность в проект?
Ответ на мой вопрос оказался довольно прямым.
1) error_reporting(0);
уничтожил все мои ошибки, связанные с использованием правильного пространства имен для моих файлов, я изменил это на error_reporting(E_ALL)
так что я мог видеть реальную проблему.
2) Файлы должны быть добавлены в namespace
, так как я использовал то же пространство имен, у меня не было никаких дополнительных include_once()
звонки.
Далее мне пришлось добавить заменить эту строку:
$class = 'elFinderVolume'.(isset($o['driver']) ? $o['driver'] : '');
С:
$class = __NAMESPACE__ . '\\elFinderVolume'.(isset($o['driver']) ? $o['driver'] : '');
Что позволяет загружать драйвер (который теперь находится в пространстве имен).
После того, как эти изменения были сделаны, все хорошо, я могу добавить свою собственную логику, где мне угодно.
Других решений пока нет …