где сохранить функции помощника?

у меня есть много функций, которые я создаю или копирую с сети.

я задаюсь вопросом, должен ли я сохранить их в файле, который я просто включаю в сценарий или если я храню каждую функцию как статический метод в классе.

например, у меня есть getCurrentFolder () и isFilePhp () функция.

если они хранятся в файле, как они или каждый в классе:

Папка:: getCurrent () File::isPhp ();

как ваши дела?

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

спасибо.

6
задан Galen 27 April 2010 в 00:29
поделиться

1 ответ

Вы правы, это очень субъективный вопрос, однако я, вероятно, использовал бы сочетание двух ваших вариантов.

У вас есть класс (скажем, 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] () в каждый из ваших классов и реализует некоторую логику в структуре папок / файлов ваших вспомогательных файлов / функций.

3
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: