У меня есть класс в php, называемый «SEO_URL». В какой-то момент в этом классе у меня есть это
$class_name = "cPath_SEO_URL"; return $class_name::href();
и я получаю
Fatal error: Class 'cPath_SEO_URL' not found in ...\includes\classes\seo.class.php on line 52
Дело в том, что я включил класс поверх SEO_URL
include_once(/path/to/my/class); class SEO_URL{ }
и я получаю эту ошибку.
Однако, когда я жестко программирую класс поверх класса SEO_URL, он работает. Так что это работает.
class cPath_SEO_URL{ function cPath_SEO_URL(){} function href() { return "CPathHref"; } } class SEO_URL{ ... $class_name = "cPath_SEO_URL"; return $class_name::href(); ... }
и это не
include_once(/path/to/my/class); class SEO_URL{ ... $class_name = "cPath_SEO_URL"; return $class_name::href(); ... }
Я пытаюсь это в oscommerce.
Почему это?
Хорошо, вы не поверите, в чем проблема.
Я использую для открытия и закрытия php-файла, как это
<? ... ?>
не
<?php ?>
и файл класса был без <?php .. ?>
но <? ... ?>
<? ... ?>
. Я предполагаю, что среда, в которой я сейчас работаю, требует <?php
не <?
только.
Он будет загружать класс, но он не будет интерпретировать его как php.
С
$class_name = "cPath_SEO_URL"; $test = new $class_name(); return $test::href();
вы делаете статический вызов экземпляра. Это не имеет смысла.
Вместо этого вы захотите сделать
$class_name = "cPath_SEO_URL"; return $class_name::href();