Автоматическая загрузка библиотек функций / классов при необходимости - PullRequest
4 голосов
/ 30 июля 2009

Сначала немного фона. Компания, в которой я работаю, использует массивную библиотеку функций / классов, которая включается на каждой странице. Тысячи и тысячи строк функций, 90% которых, вероятно, даже не будут вызываться на странице.

В попытке немного снизить нагрузку на сервер я экспериментировал с более разумными настройками библиотеки. Для этого я разбил весь файл на классифицированные библиотечные файлы (например, sql.functions.php, date.functions.php и другие).

К сожалению, включение каждого файла на каждой странице не помогает вообще, а выборочное включение файлов практически невозможно и очень подвержено ошибкам.

Что мне нужно, так это настройка, похожая на функцию PHP ___autoload(), которая автоматически ищет файлы с определенными именами в случае запуска неизвестного класса в попытке найти его.

<?php
  function ___autoload($class_name) {
    require_once($class_name.'.class.php');
  }
?>

Однако эта функция не работает для вызовов функций, только для классов.

Есть ли способ заставить PHP при вызове неопределенной функции (т.е. html_insert_button();) автоматически искать и включать библиотеку именованных функций?

(В указанном выше случае необходимо будет загрузить html_functions.php, поскольку он имеет префикс функции)

1 Ответ

4 голосов
/ 30 июля 2009

К сожалению, я не верю, что есть способ автоматически загружать функции. Некоторые парни спорили об этом на форумах SitePoint .

Я, например, думаю, что это будет отличное дополнение, потому что оно позволит вам уменьшить количество входных сигналов.

Я использовал этот подход к загрузке своих функций, очень похожий на CodeIgniter's:

Всякий раз, когда я собираюсь использовать набор функций, я буду вызывать библиотечную ("html") функцию, которая будет включать библиотеку, которую я собираюсь использовать (убедившись, что она включает ее только один раз).

function library($name)
{
    include($name .".lib.php");
}

Возможно, не тот ответ, который вы ищете, но именно так я и делаю.

...