2014-01-26 4 views
0

Вещи немного запутались при попытке использовать библиотеку, которую я создал. Это то, что мой проект выглядит без лишнего контента.php: глобальная переменная mess

lib_vars.php

<?php $lib_var = 10;?> 

lib.php

<?php 
    require_once('lib_vars.php'); 
    function lib_func(){ 
     global $lib_var; 
     echo $lib_var; 
    } 
?> 

action.php

<?php 
    require_once('lib/lib.php'); 
    function action(){ 
     lib_func(); 
    } 
?> 

index.php

<?php 
    require_once('action.php'); 
    function main(){ 
     if(true) 
      action(); 
    } 
    main(); 
?> 

По какой-то причине я должен поместить require_once('action.php') сверху index.php. Если я помещаю его в if-statement, он не может найти $lib_var. Если у меня есть 10 различных действий в index.php, то я буду вынужден включить 9 ненужных файлов. Кто-нибудь знает альтернативу?

Спасибо.

+1

Конечно, вы не можете поместить его в оператор 'if'. Это не будет глобальная переменная. –

ответ

1

Вам не нужно размещать require_once('action.php') поверх index.php, но если вы включаете что-либо в пределах ограниченного объема, вам придется вручную экспортировать все переменные, включенные в него как глобальные. Аналогичным образом, если вы хотите использовать глобальные переменные во включенном файле, вам нужно «импортировать» их. См. Пример использования extract для выполнения таких задач: https://stackoverflow.com/a/10144260/925196

Смежные вопросы