LINUX.ORG.RU

[php][noob]class forward declaration

 ,


0

1

Вопрос- в пхп есть такое?
Собственно сама проблема - есть директория ./core/ с файлами class1.php class2.php которая вся нужна, поэтому для уменьшения инклюдов и влияния склроза делаю -

function loadCore($coreDir)
{
	$path = dir($coreDir);
	while ($fileName = $path->read())
	{
		include_once "$coreDir/$fileName";
	}
	$path->close();
}
Но может быть, что
class1 extends class2
, но при инклюде class1 class2 еще не определен и соответственно
Fatal error: Class 'class2' not found 
Вопрос как это перебороть? (Можно конечно брутфорс - называть файлы в соответствии с тем, как они будут инклюдаться - 01class2.php, 02class1.php :D)



Последнее исправление: spdooh (всего исправлений: 1)

Ответ на: комментарий от AlexKiriukha

Интересная вещь, не знал, спасибо!

Но немного не то - я-то знаю, что _все_ файлы надо включить сразу, а не дождаться ошибки, а на крайний случай попытаться сделать инклюд...

spdooh
() автор топика
Ответ на: комментарий от spdooh

То есть работать работает, но «не радует»)

spdooh
() автор топика

Вопрос как это перебороть?

function class_loader($class_name)
{
    // тут мы грузим наш класс, вычисляя как надо его файл или даже
    // создавая его вручную через eval
}

spl_autoload_register('class_loader');

выгода!

KRoN73 ★★★★★
()
Ответ на: комментарий от AlexKiriukha

>oop5.autoload.php может это поможет

«spl_autoload_register() provides a more flexible alternative for autoloading classes. For this reason, using __autoload() is discouraged and may be deprecated or removed in the future»

Функция __autoload() глобальная и одна. Не позволяет использовать в системе несколько автолоадеров. А они сегодня в разных механизмах часто используется. Так что — [php][noob]class forward declaration (комментарий)

KRoN73 ★★★★★
()
Ответ на: комментарий от SOmni

Совместил, радует больше. Но не искренне)
все равно в какой-то момент я сижу о дожидаюсь ошибки, в ответ на которую выполняю правильное действие...

spdooh
() автор топика
Ответ на: комментарий от AlexKiriukha

Собственно, и правильно сделал) Ибо думать самому надо: Если не думать, то код будет страшным, чем страшнее код, тем ТС раньше выгонят из кодеров - тем меньше он успеет написать - тем меньше испортит мир - profit :D

spdooh
() автор топика
Ответ на: комментарий от KRoN73

Хотя... видимо так и придется делать - все-таки количество классов не так уж и много, можно для каждого и лоадер вызывать...

spdooh
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.