2012-01-17 49 views
1

中授予包含文件全局作用域的功能我被一些ABSTRACTION &咬過了ORGANIZATION bug,我決定使用一個名爲Loader的類在我的php應用程序中包含文件像這樣如何在一個函數內包含文件,並仍然在php

class Loader 
{ 
    public $loadedFiles=array(); 

    public function isLoaded($fileName) 
    { 
     if(in_array($fileName,$this->loadedFiles)) 
     return true; 
     else 
     return false; 
    } 

    public function load() 
    { 
     $fileList=func_get_args(); 
     foreach ($fileList as $file) 
     { 
      if(!$this->isLoaded($file)) 
      { 
       $flag=include(ROOT_DIR_PATH.'includes'.DS.$file); 
       if($flag) 
       { 
        $this->loadedFiles[]=$file; 

       } 
       else 
       return false; 
      } 
     } 
    } 
} 

現在我可以包括使用這樣的事情

$loader=new Loader(); 
$loader->load('db.class.php','utility.php','objects.php'); 

在我的應用程序文件,但問題是,現在通過上述方法包含的所有文件的功能,被授予日上述方法的範圍load。現在我不能使用包含文件的任何功能。每當我使用上述包含文件的任何功能時,我會收到一條警告,說undefined function。有什麼辦法可以將全局範圍授予包含文件的功能。

+0

是路徑$ flag = include(ROOT_DIR_PATH.'includes'.DS。$ file);正確? – JackTurky 2012-01-17 13:59:43

回答

1

看起來問題在其他地方。我試圖模擬你正在嘗試做什麼,它對我有用。
include1.php

<?php 
function tester() 
    echo "This is tester\n"; 
} 

include2.php

<?php 

class Loader { 
    public function load() { 
     $var = include('include1.php'); 
    } 
} 

$loader = new Loader(); 
$loader->load(); 
tester(); 

,結果是這樣的:這是測試儀

有沒有任何作用域問題。正如@JackTurky提到的,檢查路徑。

相關問題