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 :: Не работает __autoload()

 PHP.SU

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


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

> Без описания
ilyasret
Отправлено: 30 Июня, 2014 - 04:42:25
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




Не работает автозагрузка классов __autoload()
PHP:
скопировать код в буфер обмена
  1. function __autoload($class)
  2. {
  3.     $filename = "../sys/class/class." . $class . ".inc.php";
  4.     if ( file_exists($filename) )
  5.     {
  6.         include_once $filename;
  7.     }
  8. }

все пути правильно настроенны, корневой сделал папку /public, пхп 5.3

гуглил везде приводилась spl_autoload_register('autoload'); но не помогло как описывалось на форумах

(Отредактировано автором: 30 Июня, 2014 - 04:44:17)

 
 Top
Мелкий Супермодератор
Отправлено: 30 Июня, 2014 - 08:01:02
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Постройте абсолютный путь. Можно использовать константу __DIR__


-----
PostgreSQL DBA
 
 Top
ilyasret
Отправлено: 30 Июня, 2014 - 08:10:30
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




[quote=Мелкий][/quote]
пример приведите как это сделать
 
 Top
DelphinPRO
Отправлено: 30 Июня, 2014 - 08:37:16
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $filename = realpath(__DIR__ . "/../sys/class/class" ... );
  2. echo $filename;


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
ilyasret
Отправлено: 30 Июня, 2014 - 10:45:33
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




DelphinPRO пишет:
PHP:
скопировать код в буфер обмена
  1. $filename = realpath(__DIR__ . "/../sys/class/class" ... );
  2. echo $filename;

фатальную ошибку выдает и ненайден класс, не работает , плиизз хэлп
PHP:
скопировать код в буфер обмена
  1. function __autoload($class)
  2. {
  3.     $filename = realpath(__DIR__ . "../sys/class/class") . $class . ".inc.php";
  4.                
  5.     if ( file_exists($filename) )
  6.     {
  7.         include_once $filename;
  8.     }
  9. }

(Отредактировано автором: 30 Июня, 2014 - 10:50:05)

 
 Top
esterio
Отправлено: 30 Июня, 2014 - 13:00:55
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




ilyasret пишет:
$filename = realpath(__DIR__ . "../sys/class/class").'.' . $class . ".inc.php";

У вас там точка потерялась

А вообще-то почитайте PSR-0/1/2[dot] Русская версия
 
 Top
ilyasret
Отправлено: 30 Июня, 2014 - 13:12:11
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




Я так понимаю __autoload() устарел и больше не используется?
подскажите как правильно подключить эти классы? я просто книгу одну разбираю и автор в ней использовал __autoload().
PHP:
скопировать код в буфер обмена
  1.  
  2. function __autoload($class)
  3. {
  4.     $filename = "../sys/class/class." . $class . ".inc.php";
  5.     if ( file_exists($filename) )
  6.     {
  7.         include_once $filename;
  8.     }
  9. }
  10.  

$filename = "../sys/class/class." . $class . ".inc.php";
 
 Top
esterio
Отправлено: 30 Июня, 2014 - 13:27:35
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




структура
Цитата:
vendor
-- application
---- core
------ ClassA.php
index.php


ClassA.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. namespace application\core;
  3.  
  4. class ClassA{}


index.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. define('VENDOR_DIR', __DIR__.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR);
  3.  
  4. function autoload($className)
  5. {
  6.     $className = ltrim($className, '\\');
  7.     $fileName  = VENDOR_DIR;
  8.     $namespace = '';
  9.     if ($lastNsPos = strrpos($className, '\\')) {
  10.         $namespace = substr($className, 0, $lastNsPos);
  11.         $className = substr($className, $lastNsPos + 1);
  12.         $fileName  = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
  13.     }
  14.     $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
  15.  
  16.     require $fileName;
  17. }
  18.  
  19.  
  20.  
  21. $class_a = new \application\core\ClassA();


это всего лишь пример
сама функция взята отсюда
http://www.php-fig.org/psr/psr-0/

(Отредактировано автором: 30 Июня, 2014 - 13:28:53)

 
 Top
ilyasret
Отправлено: 30 Июня, 2014 - 16:35:03
Post Id


Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




Нашел решение вот так
PHP:
скопировать код в буфер обмена
  1. spl_autoload_register(function ($class_name) {
  2.     $file = '../sys/class/class.' . strtolower($class_name) . '.inc.php';
  3.     if ( file_exists($file) )
  4.         require_once ($file);
  5. });
 
 Top
Wooorker
Отправлено: 21 Октября, 2014 - 20:54:24
Post Id



Гость


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


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




ilyasret пишет:
Нашел решение вот так


А нельзя узнать какой версии php в изучении Ленгстрофа использовался?
На версии PHP 5.4.4 вроде бы нормально __autoload() работает, если ошибок нет в синтаксисе.

(Отредактировано автором: 21 Октября, 2014 - 20:54:50)

 
 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