Динамическое подключение функций (Рейтинг: +10)

Печать RSS
Когда функций очень много их неудобно хранить все в одном файле, да и зачем подключать километр кода когда нужно воспользоваться всего лишь парой функций, собственно решение:

Cоздаем в корне папку fun в которой будут хранится наши функции, по одному файлу на каждую, имя файла должно соответствовать имени функции, для примера создадим файл test.php с функцией test

<?php
function test($val1, $val2, $val3){
	return $val1.$val2.$val3;
}
?>

Теперь класс который будет подключать наши функции
<?php
class fun{
	function __call($function, $value) {
		include_once $_SERVER['DOCUMENT_ROOT'].'/fun/'.$function.'.php';
		return call_user_func_array($function, $value);
	}
}
?>

Теперь воспользуемся нашей функцией "test"
<?php
$fun = new fun;
echo $fun->test('тра ','та ', 'та ');
//Выведет тра та та
?>

Вот и всё, проще же подключить всего один маленький класс вместо километра кода и вызывать функции $fun->ИмяФункцииКоторуюНужноВызвать(параметры);
И ещё, не мешало бы создать файл в той же папке fun с описанием каждой функции это поможет и вам и тем кто будет потом работать с вашим скриптом

Тест производительности

Провел тест, создал 1к функций
<?php
function function0($msg)
{
    $eng = array("_", "YA", "Ya", "ya", "yee",
        "YEE", "YO", "yo", "Yo", "ZH", "zh", "Zh",
        "Z", "z", "CH", "ch", "Ch", "SH", "sh",
        "Sh", "YE", "ye", "Ye", "YU", "yu", "Yu",
        "JA", "ja", "Ja", "A", "a", "B", "b", "V",
        "v", "G", "g", "D", "d", "E", "e", "I", "i",
        "J", "j", "K", "k", "L", "l", "M", "m", "N",
        "n", "O", "o", "P", "p", "R", "r", "S", "s",
        "T", "t", "U", "u", "F", "f", "H", "h", "W",
        "w", "x", "q", "Y", "y", "C", "c");
    $rus = array(" ", "Я", "Я", "я", "ые", "ЫЕ",
        "Ё", "ё", "Ё", "Ж", "ж", "Ж", "З", "з", "Ч",
        "ч", "Ch", "Ш", "ш", "Ш", "Э", "э", "Э", "Ю",
        "ю", "Ю", "Я", "я", "Я", "А", "а", "Б", "б",
        "В", "в", "Г", "г", "Д", "д", "Е", "е", "И",
        "и", "Й", "й", "К", "к", "Л", "л", "М", "м",
        "Н", "н", "О", "о", "П", "п", "Р", "р", "С",
        "с", "Т", "т", "У", "у", "Ф", "Ф", "Х", "х",
        "Щ", "щ", "ъ", "ь", "Ы", "ы", "Ц", "ц");
    return str_replace($eng, $rus, $msg);
}
//function1
//function2
//function3 итд
В каждом файле запустил 100 применений функций

test1.php - Тут все функции подключаются по старинке одним инклюдом
function0('abc');
function1('abc');
function2('abc'); итд

test2.php - Мой метод в котором происходит 100 инклюдов
$fun->function0('abc');
$fun->function1('abc');
$fun->function2('abc');
$fun->function3('abc'); итд



Первый запуск
/test1.php 0.230176925659/18261 кб
Последующие
/test1.php
0.206670999527/18262 кб //И стабильно Держится не падает ниже 2

Первый запуск
/test2.php 0.506945848465/1965 кб
Последующие
/test2.php 0.0756809711456/1965 кб //Держится стабильно

Хотя и первый запуск немного проигрывает в скорости, но вот в количестве занятой оперативки выигрывает на 90%
А в последующих запусках он вообще лидирует во всем
Что лучше, по моему очевидно smile
Добавил:
Рейтинг: +10
Просмотры: 2287
Комментарии (12) »