Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не находит класс.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Doox911
Отправлено: 02 Июля, 2018 - 15:31:23
Post Id



Частый гость


Покинул форум
Сообщений всего: 166
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Доброго времени суток.

Написал сайт по модели MVC.

При ajax запросе выдаёт:
PHP:
скопировать код в буфер обмена
  1.  
  2. PHP Fatal error:  Class 'User' not found in
  3.  


Каждый класс в отдельном файле. Подгружаю классы так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. /*
  4. */
  5. function __autoload($class_name){
  6.         $array_paths = array(
  7.                 '/models/',
  8.                 '/components/'
  9.         );
  10.  
  11.         foreach ($array_paths as $path) {
  12.                 $path = ROOT . $path . $class_name . '.php';
  13.                 if (is_file($path)) {
  14.                         include_once $path;
  15.                 }
  16.         }
  17. }
  18.  

В контроллере вызываю метод:
PHP:
скопировать код в буфер обмена
  1.  
  2. $mail->isSMTP();
  3. $mail->Host = 'smtp.yandex.ru';
  4. $mail->SMTPAuth = true;
  5. $mail->Username = '***';
  6. $mail->Password = '***';
  7. $mail->SMTPSecure = 'ssl';
  8. $mail->Port = 465;
  9. $mail->CharSet = 'UTF-8';
  10. $mail->setFrom( '***', 'ООО "Фирма"' );
  11. $mail->addAddress( User::getUserEmail() );
  12. $mail->isHTML(true);
  13. $mail->Subject = 'Смена статуса';
  14. $mail->Body    = $text;
  15. $mail->send();
  16.  

В чём прикол? Ничего до вызова метода не вывожу.
(Добавление)
записал результат в переменную до объявления объекта phpmailer, ошибка пропала. Я так понимаю phpmailer мог уже заголовки отправить?
 
 Top
andrewkard
Отправлено: 02 Июля, 2018 - 16:41:48
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Doox911 пишет:
записал результат в переменную до объявления объекта phpmailer, ошибка пропала. Я так понимаю phpmailer мог уже заголовки отправить?

думаю дело в этой строке:
Doox911 пишет:
$mail->addAddress( User::getUserEmail() );

(Добавление)
Ваш автолоадер не работает.
 
 Top
Doox911
Отправлено: 02 Июля, 2018 - 18:02:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 166
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




В целом сайт работает. А как проверить его корректную работоспособность? То что в этой строке проблема это и так понятно))) PHP выдаёт. Вопрос почему!
 
 Top
andrewkard
Отправлено: 02 Июля, 2018 - 18:45:10
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




debug в помощь, вызывается ли автолоадер, по какому пути ищет файлы и т.д.
 
 Top
haveFun
Отправлено: 13 Июля, 2018 - 18:04:36
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




используйте композер, к чему эти велосипеды?
 
 Top
nefone
Отправлено: 22 Ноября, 2020 - 21:55:03
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2020  
Откуда: Орёл


Помог: 0 раз(а)




Перед тем, как подключать файлы с помощью include или require полезно проверить его наличие функцией file_exists()
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function __autoload($class_name){
  4.         $array_paths = array(
  5.                 '/models/',
  6.                 '/components/'
  7.         );
  8.  
  9.         foreach ($array_paths as $path) {
  10.                 $path = ROOT . $path . $class_name . '.php';
  11.                 if (is_file($path) && file_exists($path)) {
  12.                         include_once $path;
  13.                 }
  14.         }
  15. }
  16.  
 
 Top
LIME
Отправлено: 23 Ноября, 2020 - 06:38:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




nefone допустим, но
1. какой смысл это делать для пакетов? то есть мы тихо проходим мимо если не нашли файл - и тут же вываливаемся с ошибкой при использовании неподключенного пакета).
уж лучше громко кричать чтоб было видно еще на этапе разработки
2. а зачем file_exists если уже проверили is_file? может там лучше class_exists, чтоб понять содержит ли файл нужный класс?
(Добавление)
haveFun пишет:
используйте композер, к чему эти велосипеды?
согласен
но поиграться с велосипедами всеже полезно для начала
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB