Include из функций

Тема в разделе "PHP программирование", создана пользователем Holger Dee Assuran, 10 дек 2007.

  1. Holger Dee Assuran

    Holger Dee Assuran Гость

    Суть:
    У меня есть довольно большой объем библиотек функций. При работе с конкретной страницей используются лишь несколько. Была мысля, для разгрузки сервера подгружать только библиотеки необходимые в данный момент. А для сокращения кода сделать это с помощью функции.
    Код (Text):
    function LoadObject($objectpath){
    global $DR;
    if (!$objectpath){
    echo "<html>\n<head>\n\t<title>Критическая ошибка</title>\n</head>\n<body>\n";
    echo "\t<font color='red'>\n\t\t<h1>Критическая ошибка!</h1>\n\t\t";
    echo "<p>Не задано имя объекта! Продолжение работы не возможно!</p>\n\t</font>\n</body>\n</html>";
    exit;
    }
    @ $inc=include("$DR/../fns/$objectpath.obj.php");
    if (!$inc){
    echo "<html>\n<head>\n\t<title>Критическая ошибка</title>\n</head>\n<body>\n";
    echo "\t<font color='red'>\n\t\t<h1>Критическая ошибка!</h1>\n\t\t";
    echo "<p>Невозможно загрузить объект! Продолжение работы не возможно!</p>\n\t</font>\n</body>\n</html>";
    exit;
    }
    }
    Эта функция должна вызываться на странице перед применением функций какой-либо библиотеки и включать ее в код страницы. Беда в том, что include будет виден только внутри функции, а нужно чтобы вставка шла в глобальный контекст.
     
  2. GOsha

    GOsha Гость

    Круче, если передавать массив, с именами подключаемых объектов.
    Код (Text):
    $objarr = array(graph,text,dlg,tambourine);

    LoadObj($objarr);
    Ну а там разбирать уже массив. - Это чтобы не вызывать ее 10 раз. А вообще ваша задумка описана Д. КОтеровым в книге PHP4. Там она обзывается библиотекарь.

    А еще хорошо бы, наконец, начать писать классы.

    А если в функции написать return $inc; - Тада она начнет возвращать инклуд.

    А вообще она какая-то у вас извращенная. Не будет работать под register_globals = 'off'. Я бы посоветовал нарисовать все на бумажке, как и чего куда запрашиватся бут и что отдавать
     
  3. maykoff

    maykoff Гость

    Если перенести всё в php5 , в классы - то можно пользовать __autoload()
    Прописывается функция автозагрузки, и затребованный класс при его отсутствии передаётся параметром в эту функцию. Соответственно - в ней можно подключить скрипт с таким же именем

    скрипт:
    Код (Text):
    <?php
    require('./include/classes/autoload.inc');
    autoload.inc:
    Код (Text):
    <?php
    session_start();
    function __autoload($class)
    {
    define('PATH',$_SERVER['DOCUMENT_ROOT']);
    if(file_exists(PATH."/include/classes/{$class}.inc"))
    {
    include(PATH."/include/classes/{$class}.inc");
    }
    else
    {
    exit("<center><h1>{$class} NOT FOUND!");
    }
    }
    ?>
     
Загрузка...

Поделиться этой страницей