Bit late to this one, but what about an mvc framework like codeigniter? It's 
perfectly acceptable to use if statements and loops in the view, which would 
solve your problem. You can set a trigger variable in the controller, and in 
the header view, check to see if its set and output your javascript lines as 
appropriate.

Thanks,
Ash
http://www.ashleysheridan.co.uk

----- Reply message -----
From: "Peter Lind" <peter.e.l...@gmail.com>
Date: Thu, Oct 21, 2010 07:01
Subject: [PHP] I need some thoughts on code duplication and separation
To: "David McGlone" <da...@dmcentral.net>
Cc: <php-general@lists.php.net>


On 21 October 2010 04:59, David McGlone <da...@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>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to