Как включить файлы в функцию и все же предоставить функции глобальной области включенного файла в php - PullRequest
1 голос
/ 17 января 2012

Я был укушен какой-то ошибкой ABSTRACTION & ORGANIZATION, и я решил, что я включу файлы в мое php-приложение, используя класс Loader, который выглядит следующим образом

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. Есть ли способ, которым я могу предоставить глобальную область видимости для функций включенных файлов.

1 Ответ

1 голос
/ 17 января 2012

Похоже, проблема в другом.Я пытался смоделировать то, что вы пытались сделать, и это сработало для меня. 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, проверьте путь.

...