у меня есть много функций, которые я создаю или копирую с сети.
я задаюсь вопросом, должен ли я сохранить их в файле, который я просто включаю в сценарий или если я храню каждую функцию как статический метод в классе.
например, у меня есть getCurrentFolder () и isFilePhp () функция.
если они хранятся в файле, как они или каждый в классе:
Папка:: getCurrent () File::isPhp ();
как ваши дела?
я знаю, что это своего рода, "поскольку Вы хотите" вопрос, но это было бы большим с некоторыми советами/лучшими практиками
спасибо.
Вы правы, это очень субъективный вопрос, однако я, вероятно, использовал бы сочетание двух ваших вариантов.
У вас есть класс (скажем, Helper) с магическими методами __ call ()
(и / или __ callStatic ()
, если вы используете PHP 5.3+) , когда вызывается неопределенный [статический] метод, он загружает соответствующий вспомогательный файл и выполняет вспомогательную функцию. Имейте в виду, что включение файлов снижает производительность, но я считаю, что выгода, которую вы получаете с точки зрения организации файлов, намного перевешивает небольшое снижение производительности.
Простой пример:
class helper {
function __callStatic($m, $args) {
if (is_file('./helpers/' . $m . '.php')) {
include_once('./helpers/' . $m . '.php');
return call_user_func_array($m, $args);
}
}
}
helper::isFilePhp(/*...*/); // ./helpers/isFilePhp.php
helper::getCurrentFolder(/*...*/); // ./helpers/getCurrentFolder.php
Вы можете дополнительно оптимизировать этот фрагмент и даже иметь несколько типов помощников (папка, файл) и т. Д., Добавив магический метод __ call [Static] ()
в каждый из ваших классов и реализует некоторую логику в структуре папок / файлов ваших вспомогательных файлов / функций.