Дано: - PHP4/5 - есть некий класс в отдельном файле Код (Text): class CLS { function CLS() {} }; - есть еще один/несколько файл/ов, в котором/ых описан ряд функций Код (Text): function Func1() { ... }; function Func2() { ... }; - есть файл, который инклюдит файл с описанием Класса CLS и "инклюдит" доп. файлы "методов"... что-то типа: Код (Text): function CreateCLS(&$c) { include_once('file_cls'); include_once('funcs1'); include_once('funcs2'); ... include_once('funcsN'); $c = new CLS(); return true; }; $c = null; if(CreateCLS($c)) $c->Func1(); В данном виде это естессно не пашет, т.к. метода Func1() у класса нету, есть глобальная функция, которой быть не должно..... Задача - нужно ТАК "проинклюдить" файлы класса и методов, чтобы доп. функции были методами Класса... как вариация, определенный формат файла с описанием Класса и доп. фйлов методов... Работать должно как в PHP4, так и в PHP5... Ну и чтобы подключение такого "Сборного" Класса шло через вызов функции "CreateCLS(&$c)" что-то равносильное такому объявлению... и соответственно работу через Класс Код (Text): class CLS { function CLS() {} function Func1() { ... } function Func2() { ... } }; ЗЫ. Наследники возможны, но только если он один и нет последовательного наследования, т.к. файлы методов могут добавляться, удаляться, подключаться вразнобой и случайным образом... Вот такая задачка для гуру..... :roll: - скажу честно, я не в силах решить, знаний не хватает - ХЕЛП
Под php5, под четвёрку сам, если делать нечего. PHP: <?php class Test { function __construct(){ $this->var = 'Numbers'; } function __call($name, $args){ if (function_exists($name)){ array_unshift($args, $this); return call_user_func_array($name, $args); } } } function SomeFunc($self, $n1, $n2, $n3){ return sprintf('%s: %d, %d, %d.', $self->var, $n1, $n2, $n3); } $test = new Test; echo $test->SomeFunc(1, 2, 3); ?>
Выход найден Нашел более универсальный выход =)))... Причем так, как и хотел - без глобальных функций и лишнего гемороя =))) Код выкладывать с комментариями просто лень =(((, опишу алгоритм просто... Проверяю наличие файла класса _cls.php Если его нету - просто создаю этот файл в папке, простым "парсингом" из других дополнительных файлов функций... После чего стандартно include_once(_cls.php); Супер пашет - причем кроссплатформенность версий гарантирована[/b]