Проблема выполнение кода из включаемых файлов.

  • Автор темы paganelp
  • Дата начала

paganelp

Guest
Проблема выполнение кода из включаемых файлов.

Есть основная программа

PHP:
foreach ( $contents_array as $data ) {
   require_once($data['module_path']);
   $html_out .= get_module_data ($id);
}
где в require_once($data['module_path']) подключаются различные файлы. У каждого из этих файлов одинаковая структура. Т.е. там есть несколько обязательно-одинаковых функций, одна из которых get_module_data().
PHP:
file1.php
-----------
get_module_data ($id)
{
   return "Example data 1";
}
----------------------------------

file2.php
-----------
get_module_data ($id)
{
   return "Example data 2";
}
----------------------------------
Необходимо: получать в цикле основной программы данные их подключаемых модулей.

В случае если вызываем один модуль или один и тот-же несколько раз, то проблем нет. А получить данные из нескольких различных модулей невозможно. Как и положено, получаем ошибку:
PHP:
Cannot redeclare get_module_data()
Каким образом можно решить данную ситуацию?
Сразу оговорюсь, что имена процедур желательно оставить одинаковыми.
 

paganelp

Guest
Можно конечно и с классами попробывать.
А не получиться тоже самое?
Я пока еще новичек в классах. Только начинаю их использовать.
PHP:
$i=1;
foreach ( $contents_array as $data ) {
   require_once($data['module_path']);
   $my_class.$i = new class GetData;
   $html_out .= $my_class.$i->get_module_data ($id);
   $i++;
}


file1.php
-----------
class GetData
{
   return "Example data 1";
}
----------------------------------

file2.php
-----------
class GetData
{
   return "Example data 2";
}
----------------------------------
Я правильно понял идею?
 

Мутник

Новичок
Поищи материал о классах. ты тут вообще брехню какую то написал.


PHP:
$my_class.$i = new class GetData;
А это что такое?

Думаю, даже на этом форуме будет море информации.
 

paganelp

Guest
Я просто имел ввиду, что каждый раз новый объект с новым именем надо создавать. Вот и все.
 

Crazy

Developer
paganelp, ты не должен хотеть иметь в своих подключаемых файлах одноименные функции/классы.
 

vafel

Новичок
если ты токо ето выполняешь
foreach ( $contents_array as $data ) {
require_once($data['module_path']);
$html_out .= get_module_data ($id);
}

то помоему $html_out .= get_module_data ($id); проще в подключаемых файлах формировать,
можно еще какойнить айди завести и евалом функции исполнять.
п.с. классами удобней )
 

paganelp

Guest
Тогда каким образом лучше выполнять след. задачу.

В основной программе необходимо формировать блоки html кода. Эти блоки формируют модули, оргинизованные в виде файлов:

/modules/module_name_1/mod.php
/modules/module_name_2/mod.php
/modules/module_name_3/mod.php
/modules/.../mod.php
/modules/module_name_n/mod.php

в этих модулях есть функция get_module_data ($id), которая и возвращает нужный код html.

Необходимо по заданному набору (module_name_x1, module_name_x2, ...,module_name_xm) делать обращения к заданным функциям (в цикле). И получать данные?

Т.е. у всех mod.php структура должна быть одинаковая.
 
Сверху