Re: I need some thoughts on code duplication and separation
| From: | Peter Lind | Date: | Thu, 21 Oct 2010 06:01:43 +0000 |
| Subject: | Re: I need some thoughts on code duplication and separation | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-308911@lists.php.net to get a copy of this message | ||
On 21 October 2010 04:59, David McGlone <david@dmcentral.net> wrote:
> On Thu, 2010-10-21 at 04:05 +0200, Rico Secada wrote:
>> Hi.
>>
>> I am working on a small system where I am both trying to avoid code
>> duplication and at the same time I am trying to keep the presentation
>> logic separated from the application logic.
>>
>> I am using sessions and are avoiding "headers already sent" problem by
>> keeping the HTML out of the application.
>>
>> For example, I would like to have a common header.php file, but it is
>> difficult to create this since one file needs to have some specific
>> Javascript located in the <head> </head> tags, but the other files
>> doesn't need this.
>>
>> Another file needs to have a specific "onload" call in the <body> tag,
>> while yet another file also needs to have an "onload" call, but with
>> different attributes.
>>
>> I have been looking around in other systems to see what kinds of
>> solutions are being used - as inspiration.
>>
>> I have been thinking about the following solutions:
>>
>> 1. Create only ONE header.php file that contains a lot of conditionals
>> depending on what file is including it - the output of HTML/Javascript
>> changes.
>>
>> I believe this would turn into a very ugly hack. Difficult to maintain.
>>
>> 2. Create a HTML generating class with a set of methods that each
>> contains an adequate amount of parameters. Each method maintains its
>> own HTML tag. For example, docType($type) would generate the doctype
>> specification.
>>
>> I believe this is a "cleaner" solution, but the problem with code
>> duplication isn't avoided.
>>
>> Some of the presentation logic contains conditionals and the HTML
>> changes when the conditional changes, hence the header content changes,
>> but the <doctype>, <html>, and <head> doesn't necessarily change and
>> they would get duplicated a couple of times in some files.
>>
>> 3. Avoid the problem all together, use output buffering and completely
>> forget about separation between application and presentation.
>>
>> I hope I make sense.
>>
>> Any thoughts on these kinds of problems?
>
> sounds like a job for smarty http://www.smarty.net/
>
> I've used smarty and it's nice.
>
How does Smarty solve this problem? Just curious.
Regards
Peter
--
<hype>
WWW: plphp.dk / plind.dk
LinkedIn: plind
BeWelcome/Couchsurfing: Fake51
Twitter: kafe15
</hype>