У меня есть модуль, например, учетная запись. Конечно, вы найдете файл с именем acount / actions / action.class.php.
PHP-файл action.class.php становится большим. Можно ли продлить его?
для примера:
/account/action/action.class.php /account/action/action2.class.php
Если это возможно, как выглядит код в action.class.php и в action2.class.php? И / или где я должен что-то вводить в config-ymal-файле?
Заранее спасибо!
Craphunter
Действия Symfony могут быть объявлены в двух вариантах:
Оба они в основном одинаковые, но они не могут быть смешанными (вы должны решить, хотите ли вы 123123 файлов, 1 на действие или один большой файл жира).
Вот его ссылка на symfony по этому вопросу: Symfony Front Controller – Действия проверяют раздел Action.
Похоже, класс действия становится слишком большим, потому что в нем слишком много вещей. Я бы предложил разбить его на несколько модулей или переместить соответствующие части логического кода в ваши модели.
Добавление include для файла action2 не означает, что Symfony 1.4 предназначен для использования и, скорее всего, приведет к любой другой головной боли.
PHP не поддерживает «частичные классы», такие как C #. Таким образом, у вас есть два варианта:
Создайте цепочку наследования, создав класс baseActions
который наследует sfAction
. Затем создайте свой класс MainActions
который наследуется от baseActions
. Вы можете добавить разные уровни наследования.
Групповые функции в отдельных классах. Переопределите функцию execute()
в файле действий и вручную вызовите функцию в соответствующем классе.
Также подумайте, относится ли какое-то поведение, которое вы реализуете в действии (контроллере) к модели (или представлению). Если действительно принадлежит к действию, просто следуйте советам гиймана и создайте действие для каждого класса, наследующего sfAction
.
Если у меня есть CRUD- модуль, основанный на модели (сгенерированный CLI), и я должен определить дополнительные поведения для этой модели , я, как правило, создаю еще один модуль, который будет содержать это поведение. Например, рассматривая модельную Article
. Я мог бы создать модуль article
для поведения article_support
(сгенерированный), article_support
для дополнительных действий, таких как модерация, активация и т. Д. И, возможно, article_ajax
для асинхронных запросов.