2012-01-17 3 views
1

Я был укушен некоторой ошибкой ORGANIZATION &, и я решил, что буду включать файлы в моем приложении php с помощью класса Loader, который похоже, этотКак включить файлы внутри функции и по-прежнему предоставлять функции включенной глобальной глобальной области в 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'); 

но проблема в том, что теперь все функции файлов, включенных указанным выше способом, предоставляется й e объем вышеуказанного метода load. теперь я не могу использовать любые функции включенных файлов. Всякий раз, когда я использую любую функцию из вышеперечисленных файлов, я получаю предупреждение undefined function. Есть ли способ предоставить глобальную область функций включенным файлам.

+0

- это путь $ flag = include (ROOT_DIR_PATH.'includes'.DS. $ File); верный? – JackTurky

ответ

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, проверьте путь.

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