Динамическое подключение функций (Рейтинг: +10)
Когда функций очень много их неудобно хранить все в одном файле, да и зачем подключать километр кода когда нужно воспользоваться всего лишь парой функций, собственно решение:
Cоздаем в корне папку fun в которой будут хранится наши функции, по одному файлу на каждую, имя файла должно соответствовать имени функции, для примера создадим файл test.php с функцией test
Теперь класс который будет подключать наши функции
Теперь воспользуемся нашей функцией "test"
Вот и всё, проще же подключить всего один маленький класс вместо километра кода и вызывать функции $fun->ИмяФункцииКоторуюНужноВызвать(параметры);
И ещё, не мешало бы создать файл в той же папке fun с описанием каждой функции это поможет и вам и тем кто будет потом работать с вашим скриптом
Тест производительности
Провел тест, создал 1к функций
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%
А в последующих запусках он вообще лидирует во всем
Что лучше, по моему очевидно
Добавил: Lugaro
08.06.2010 / 06:14Cоздаем в корне папку 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%
А в последующих запусках он вообще лидирует во всем
Что лучше, по моему очевидно
Рейтинг:
+10
Просмотры: 2291Комментарии (12) »