Hello Community, When considering writting large apps with sf2, with a back and a front, some questions are occuring, about how to structure things.
Say we have one large website with a front-end for end-users and a back-end to feed the front-end, control objects, etc. The two "apps" will use same models, obviously. We'd like to separate our "views" on the models for the two apps (I call them "perspectives"). Let say we have a model named "Topic". On BackOffice, we'd like to speak about Topics using a TopicBO class, which will only have methods for backoffice problem solving. Same on FrontOffice, we'd speak to TopicFO instance. Let say TopicBO and TopicFO are two perspective objects for the Topic object. There are two problematics : How to structure the bundles, when we have more than 100 entities, when they have to be used between the two apps How to have such distincts *FO and *BO classes ? Inheritance or compositing(-wrapper) ? About question 1.: I'll try to dig somehow. Let say we have Customer, Topic & Space (a forum space) models. First try : One bundle for Core (the model in itself, with methods that could be used by both FO and BO) One bundle for FO One bundle for BO Leading us to having CustomerCoreBundle : class, metadata mapping CustomerFrontBundle : actions, templates, resources, wrapper for Front CustomerBackBundle : actions, templates, resources, wrapper for Back TopicCoreBundle : class, metadata mapping TopicFrontBundle : actions, templates, resources, wrapper for Front TopicBackBundle : actions, templates, resources, wrapper for Back SpaceCoreBundle : class, metadata mapping SpaceFrontBundle : actions, templates, resources, wrapper for Front SpaceBackBundle : actions, templates, resources, wrapper for Back This is great when we have many different actions, resources, templates to bundle within one of these bundles for specific app. Yet I'm pretty sure we can have one bundle for each object, and create directories within the bundle to have a separation between front & back stuffs. Not talking about dependencies here (how the hell hard would it be ? If it even would be hard to manage ?) We'd get a FrontBundle which would require somehow (is it even possible) all bundles for the Front, and same thing for the Back. Second One bundle "rule them all" (bundling core model, metadata, FO & BO inheritance/compositing objects, resources, actions, etc) CustomerBundle : class, metadata, actions, templates, resources, wrapper for Front & Back TopicBundle : class, metadata, actions, templates, resources, wrapper for Front & Back SpaceBundle : class, metadata, actions, templates, resources, wrapper for Front & Back How "easy" would it be to have a separation (with the mean of directory structure I guess) between Front & Back stuff ? I guess here dependencies are a lot easier to manage About question 2.: The goal is to have a class with methods specific to the application at hand. So it is easier to write and maintain (I guess). *FO classes will have methods only used for Front app. *BO classes will have methods only used for Back app. Would we go by inheriting or by wrapping them ? Inheritance: Class BaseCustomer Class CustomerFO extends BaseCustomer Class CustomerBO extends BaseCustomer (I don't go using aliases and namespaces here, KISS for the example) When methods are needed on both side, put them in BaseCustomer Compositing: Class Customer Class CustomerFO which "wraps" a Customer instance Class Customer BO which "wraps" a Customer instance When methods are needed on both side, we create proxy methods on both wrappers & implement them in the Customer (no __call() + docblocks) By writting it down, I see it's easier to inherit. Anyway, what are your feelings/experiences about such problem ? Thank you for reading and your time ! Regards, Before Printing, Think about Your Environmental Responsibility! Avant d'Imprimer, Pensez à Votre Responsabilitée Environnementale! -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en