Множественный action.class.php


У меня есть модуль, например, учетная запись. Конечно, вы найдете файл под названием 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? И/или где я должен ввести что-то в конфигурационный файл?

Заранее спасибо!

Охотник за крафтом

Author: craphunter, 2011-07-27

4 answers

Действия Symfony могут быть объявлены в двух вариантах:

  1. Большой actios.class.php файл, который наследуется от sfActions
  2. Несколько xxxAction.class.php файл, который наследуется от sfAction

Оба в основном одинаковы, но их нельзя смешивать (вы должны решить, хотите ли вы 123123 файла, 1 за действие или один большой толстый файл).

Вот ссылка на symfony по этому вопросу: Фронтальный контроллер Symfony - Действия проверьте раздел Действий.

 7
Author: guiman, 2011-07-28 18:01:54

Похоже, класс действий становится слишком большим, потому что в нем слишком много вещей. Я бы предложил разбить его на несколько модулей или перенести соответствующие части логического кода в ваши модели.

Добавление включения для файла action2 - это не то, как предполагается использовать Symfony 1.4, и, скорее всего, просто приведет ко всевозможным другим головным болям.

 4
Author: Tom, 2011-07-27 11:58:58

PHP не поддерживает "частичные классы", такие как C#. Итак, у вас есть два варианта:

  • Создайте цепочку наследования, создав класс baseActions, который наследуется от sfAction. Затем создайте свой класс MainActions, который наследуется от baseActions. Вы можете добавлять различные уровни наследования.

  • Групповые функции в отдельных классах. Переопределите функцию execute() в файле действий и вручную вызовите функцию в нужном вам классе.

 1
Author: Grad van Horck, 2011-07-27 10:51:40

Также подумайте, относится ли какое-либо поведение, которое вы реализуете в действии (контроллер), к модели (или представлению) вместо этого. Если действительно принадлежит действию, просто следуйте совету гаймана и создайте действие для каждого класса, наследующего sfAction.

Если у меня есть модуль CRUD , основанный на модели (сгенерированной CLI), и мне нужно определить дополнительные модели поведения для этой модели , я склонен создавать другой модуль , содержащий такое поведение. Например, рассматривая модель Article. Я мог бы создать article модуль для поведения CRUD (сгенерированного), article_support для дополнительного поведения, такого как модерация, активация и т.д. и, возможно, article_ajax для асинхронных запросов.

 1
Author: mgois, 2011-07-27 15:36:25