[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка классов
bposter
Нашел статью в которой рассказывается как подгружать классы только тогда когда к ним обращаются, вот код:


function __autoload($class_name) {
require_once 'clas/'.$class_name . '.php';
}


Хотелось бы услышать мнения как способ нормальный?


_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
sebastjan
bposter
А что не короче ?
include_once 'clas/'.$class_name . '.php';


Функции используются для выполнения суммы, последовательностей действий и возвращения какого то параметра при необходимости многократного использования.
а у тебя функция ни чем не отличается
от

echo "Hallo";
bposter
sebastjan, так не работает


Warning: include_once(clas/.php) [function.include-once]: failed to open stream: No such file or directory in Z:\home\oop.ma\www\index.php on line 13

Warning: include_once() [function.include]: Failed opening 'clas/.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\oop.ma\www\index.php on line 13

Fatal error: Class 'test' not found in Z:\home\oop.ma\www\index.php on line 17


_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
bposter
Причем сдесь
echo "Hallo";


смысл в том чтоб не подгружать все классы а подгружать те к которым обращаются

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
sebastjan
Пишет что неверный путь к файлу который хочешь подключить.
чтоб не мучатся с путями, сделай константу как в уроках ИРБИС и подключай что тебе надо.

Типа так
error_reporting(E_ALL);
header("Content-type: text/html; charset=utf-8");

define("VAS_HOME", $_SERVER['DOCUMENT_ROOT']);

include VAS_HOME."/clas/".$class_name.".php";

Я же написал для чего нужны функции.
ФУНКЦИИ
bposter
А откуда берется
$class_name
?

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
sebastjan
Так это твоя переменная, сам смотри выше что писал. smile.gif
bposter
Пример не мой это из статьи но с этим примером я могу работать с любым класом который вызываю

class test{


function tes($a, $s){
$z = $a * $s;
return $z;
}

}


  function __autoload($class_name) {
require_once 'clas/'.$class_name . '.php';
}



$a = new test();

echo $a->tes(3, 2);


И все ок все работает.

А если обратится к классу вашим способом
error_reporting(E_ALL);
header("Content-type: text/html; charset=utf-8");

define("VAS_HOME", $_SERVER['DOCUMENT_ROOT']);

include VAS_HOME."/clas/".$class_name.".php";


$a = new test();

echo $a->tes(3, 2);

То вылазят ошибки

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\oop.ma\www\index.php:12) in Z:\home\oop.ma\www\index.php on line 14

Notice: Undefined variable: class_name in Z:\home\oop.ma\www\index.php on line 18
[Денвер: показать возможную причину ошибки]
Warning: include(Z:/home/oop.ma/www/clas/.php) [function.include]: failed to open stream: No such file or directory in Z:\home\oop.ma\www\index.php on line 18

Warning: include() [function.include]: Failed opening 'Z:/home/oop.ma/www/clas/.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\oop.ma\www\index.php on line 18

Fatal error: Class 'test' not found in Z:\home\oop.ma\www\index.php on line 21

Warning: include(Z:/home/oop.ma/www/clas/.php)

явно не хватает переменной
$class_name
такчто может мы друг друга не правильно поняли

_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.