"Очистка" от функции после инклюда.

KorP

Новичок
Вопрос больше из серии - ка это правильно реализовать.
Грубо говорят - есть 3 файла:
2 файла (грубо говоря - однотипные модули) с функциями, имеющими одинаковые названия, ну а 3-й файл просто запускает функцию, передавая ей параметры.
module1.php
module2.php
...
engine.php:
PHP:
<?php
$modules=array("name" => array(module1,module 2,...));
foreach ($modules as $row)
{
	include_once "{$row['name']}.engine.php";
	main($param1,$param2,$param3);
}
?>
 

tz-lom

Продвинутый новичок
0е - странного ты хочешь
1е - возвращать анонимку
PHP:
<?php
return function($p1,$p2,$p3){
// PHP 5.3 required
};
PHP:
$foo = include 'test.engine.php';
$foo(1,2,3);
2е - как вариант - предлагать её как метод класса
PHP:
class Foo
{
  public function __call() { // PHP 5.3 supports this }
  public function call() { //why are you using old php? }
  public static function c() { //short way }
}
...
$cname  = 'Foo';
$a = new $cname;
$a();
$a->call();
$cname::c();
3е - использовать соглашения о именах , получать нужное имя и вызывать её
PHP:
function foo_bar_1() {}
function foo_bar_2() {}
$fname = generateName($param);
$fname();
 

KorP

Новичок
tz-lom
ну я если честно просто не придумал как это лучше реализовать, по этому хочу странного
за развёрнутый ответ крайне благодарен!
 

Ярослав

Новичок
KorP
Лучше всего реализовать обьектами и переопределить что нужно в наследниках
Тогда таких вопросов точно не будет возникать
 
Сверху