2012-01-17 26 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提到的,检查路径。

相关问题