[php]извратные инклюды

rfgbnfy

вопрос на который есть универсальный ответ "ты не должен этого хотеть" , но может можно как то это сделать .
можно ли как нибудь в php инклюдить опять же php , но не валидный . подразумевая что в конечном итоге всё будет валидно .
например хочу функцию разбить на 2 файла .
типа
index.php


<?
include("file1.php");
include("file2.php");
?>


file1.php


function aaa{
echo "a";



file2.php


echo "b";
}


дык парсер ругается . типа на всё ему пофиг - а блоки ( "{ }" ) бить на части не разрешает ..........
ЗЫ просто понадобилось в одном месте все методы одного класса вынести в разные файлы , по файлу на метод , и потом инклюдить их , а тут такая засада ..............
ЗЗЫ может это и совсем ламерский вопрос , и он легко решаем . просто башка под утро уже херово соображает .................

sergei1969

на сколько я помню, описание класса должно быть строго в 1 файле

Dasar

Перед компиляцией запускай свой скрипт, который будет собирать php-файлы из кусочков.

sergei1969

Перед компиляцией
в php?
хотя согласен, идти надо в этом направлении

Dasar

>>Перед компиляцией
> в php?
Ну, или что там у них есть...
Вобщем, перед запуском.

avinir60

А почему не сделать так:
myclass.php:
class myclass{
include "myclass_func1.php";
include "myclass_func2.php"
}
myclass_func1.php
function func1
{
...
}
myclass_func2.php
function func2
{
...
}

rfgbnfy

Parse error: parse error, unexpected T_INCLUDE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /big/web/soldier/pine/test/index.phtml on line 4

в классе могут быть вроде только описания методов и переменных ...................

rfgbnfy

в принципе решил поступить так - функция
CreateInclude($inc, $arg1=0 , $arg2=0){
include($inc);
}
такое в данной ситуации прокатывает .................. но как быть если в какой то момент реально прийдётся разбивать что то не предназначенное для этого по разным файлам ?
ЗЫ вариант file => eval или file => fwrite = > include дико медленный ...............

avinir60

Если бы мне надо делать что-то подобное(в чем я очень-очень сомневаюсь я бы сделал много классов, которые наследуют друг-друга по цепочке, каждый следующий класс - это предыдущий плюс несколько функций.

rfgbnfy

мне "надо" сделать доступ (а в идеале менять через веб-интерфейс) методы одного класса .
первое что пришло на ум - каждый метод - 1 файл , всё лежит в одной директории , и всё из этой директории инклюдится в класс . но как выяснилось такое не прокатывает ................
но можно сделать по другому - куда более безобидным способом чем по классу на метод . там как минимум устанешь определять имя конечного класса .

avinir60

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

rfgbnfy

вариант file => eval или file => fwrite = > include дико медленный ...............

правильный ответ - такого не надо хотеть . а если шибко хочется - то по другому делать .
в данном случае надо делать не динамический класс у которого методы меняются , а класс с 1 динамическим методом . который как параметр получает что он будет инклюдить ..................
Оставить комментарий
Имя или ник:
Комментарий: