2012-01-17 15 views
1

ABSTRACTION & ORGANIZATIONバグで、私はファイルをローダーと呼ばれるクラスを使って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

答えて

1

問題が他の場所にあるように見えます。私はあなたがしようとしていたことをシミュレートしようとしました。

<?php 

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

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

include2.php

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

include1.php
そして結果はこのでした:これはテスター

ある任意のスコープの問題ではありませんでした。 @JackTurkyが述べたように、パスを確認してください。

関連する問題