2016-12-22 3 views
-1

Итак, я создал пользовательскую функцию, которая будет искать в заданном месте для файла и возвращать его. Я включаю помощника, который содержит эту функцию, а затем включает файл с переменными.PHP, использующий переменную из встроенной функции include

Я хочу, чтобы затем получить доступ к этим переменным во включенных файлах с помощью функции.

Вот мои настройки:

Основной файл

<?php 

require 'helper.php'; 

require 'variable.php'; 

$Helper -> include_asset("text.php"); 

?> 

helper.php

<?php 

function include_asset($file) { 

    $full_path = "path/to/assets/folder/".$file; 

    return (file_exists($full_path)) ? include $full_path : "file ".$file." does not exist"; 
} 

?> 

variable.php

<?php $text = "hello"; ?> 

text.php

<?php echo $text; ?> 

Проблема заключается в том, что переменные $ текст не может быть доступна внутри включаемого файла, но может в главном файле. Я думаю, что это связано с тем, что пользовательская функция include является функцией переменной, но не уверен. Любая помощь?

+0

Вам нужно либо не использовать функцию для включения файла. Или используйте глобальные переменные: http://php.net/manual/en/reserved.variables.globals.php –

ответ

0

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

variable.php:

<?php 
global $text; 
$text = "hello"; 
+0

Я подумал, что это может быть причина. Можно ли было бы переместить массив переменных в $ Helper -> include_asset ("text.php"); а затем сделать их доступными? – user3683675

+0

Я не уверен, что вы подразумеваете под этим. То, как вы называете функции, не имеет значения, все, что имеет значение, заключается в том, что вы выполняете включение внутри функции, что делает переменные локальными. – Barmar

+0

$ Помощник -> include_asset ("text.php", $ array); и массив $ array представляет собой массив переменных, к которым функция может получить доступ. Таким образом, переменные входят в объем функции include. – user3683675