Решение проблемы include из функции с определением глобальных функций

dr_DOT

Guest
Решение проблемы include из функции с определением глобальных функций

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

Под загрузкой модуля подразумевается некий файл с набором основных инструкция, некий набор функций и параметров. С параметрами все порядке, они систематизированы и определены как global. Проблема возникает с функциями, они определены в этом файле и должны быть доступны не только в рамках этой функции, но как это реализовать на PHP так и не доходит.

Вот примернвй набросок кода:
PHP:
function if_module(){
  global $conf;
  include "module_1.php";
}

module_1_function(); // необходимо получать результат этой функции
-------------------------------------
Файл module_1.php:
PHP:
$conf['test'] = 1;

function module_1_function() {
    echo 'module_1_function();
}

ВОЗМОЖНО? ли такое вообще реализовать на PHP?
 

Макс

Старожил PHPClub
dr_DOT
если я все верно понял то так
PHP:
function if_module(){ 
  global $conf; 
  include "module_1.php"; 
} 

if_module(); // !!!

module_1_function(); // необходимо получать результат этой функции
то есть ты функцию объявил, но не вызвал.

все функции в ПХП назодятся в глобальном пространстве имен
 

dr_DOT

Guest
Не совсем корректно, наверное, я выразился... постараюсь уточнить:

Функция 'module_1_function' определена в module_1.php, который в свою очередь подгружается внутри функции "if_module".
Так вот функция "module_1_function" определяется только в рамках функции if_module, нужно определить ее глобально.
Возможно ли это?

Функцию то вызвал, конечно, код для примера привел просто :)
 

Макс

Старожил PHPClub
нужно определить ее глобально.
непонял, что это значит ?
если у тебя в одном месте определена функция (не важно где - в другом файле, в другой функции), она доступна везде.
PHP:
function a() {
   echo "test";
   function b() {
      echo "ha ha ha";
   }
}
a();
b();
 

dr_DOT

Guest
Maxim Matyukhin, Demiurg

Спасибочко, действительно ошибка не только в этом была, а у меня в голове что то все языки программирования перемешались.
Действительно в PHP все работает :)

Извиняюсь за тупость и доставленные неудобства..
 
Сверху