我有一些類型的問題,但我不明白它..我有一個包含/需要文件的功能,其中檢查文件已包括,並確實存在:PHP聲明變量,通過函數包含的另一個文件
function __include($fileclass, $is_required=false) {
static $already_included = array();
// checking is set extension of php file, if not append it.
if (substr($fileclass,-4)!=".php") $fileclass = $fileclass.".php";
// if already included return;
if (isset($already_included[$fileclass])) return true;
// check if file exists:
if (file_exists($fileclass)) {
if (!$is_required) include $fileclass;
else require $fileclass;
$already_included[$fileclass] = 1;
return true;
}
else {
if ($is_required) die("can't find required file");
return false;
}
}
和它的作品不錯,但是當我開始這個項目工作,我用它包含一個文件,它使用可變從父文件(,包括它的人),但它下降的通知Notice: Undefined variable: VARIABLE_NAME
。
所以要明確在編碼:
我有兩個文件file_parent.php和file_child.php,我已經試過:
file_parent.php:
function __include($fileclass, $is_required=false) { /** i've mentioned it above **/ }
class __CONNECTION {
private $test;
public function __construct() {
$this->test = "SOMETHING";
}
};
$Connect = new __CONNECTION();
// here i used it to include the children file:
__include('file_child.php');
file_child.php:
print_r($Connect);
而且我得到Notice: Undefined variable: Connect
。
當我在file_parent.php我的功能改變包括:
__include('file_child.php');
標準包括:
include 'file_child.php';
一切將正常工作,變量被定義和將被打印。
我想有一些問題,function
,但也有人解釋什麼是對發生此的真正原因,和是有可能的修復,將其固定,包括/通過function
要求的作品,並沒有從失去變量以前的文件。
謝謝!
'全局變量$ Connect'應該解決這一問題 –
當我使用'global'我必須使用'$ GLOBALS [「連接」]'我不想要的,因爲正如我所說的,它正常工作與經常包括。 – Ultrazz008
您是否嘗試過使用require()而不是include來檢查可能是誤解? –