OT Re: [Zope-DB] writing a template to test if the sql worked

Charlie Clark charlie at egenix.com
Thu May 6 05:38:06 EDT 2004


On 2004-05-06 at 11:07:31 [+0200], Philip Kilner wrote:
> I'm interested in this statement, because it touches on something I
> don't feel I understand sufficiently.

Well, it is a little deliberately provocative. Google for "PHP is evil" and 
see some other quotes. I've come to this conclusion after what seems like age 
in web stuff. While I'm not much of a programmer myself I've had to maintain 
sites with work done by other people and maintenance is where the problems 
start. Notwithstanding Bogdan's perfectly valid point that it largely depends 
on the programmer. True, true: a good programmer will always produce good 
code whatever the language or environment and a bad programmer will pretty 
much alwas produce illegible junk. Now exactly what is good or bad, legible 
or illegible is often subjective. This puts us pretty much in the Python vs. 
perl argument where my preference is for explicit rather implicit coding 
rules.

> Sure, DTML intertwines presentation and logic - but if I develop a ZPT
> which conditionally fires python script (e.g. for form validation, or a
> database write), is that any less "in-line scripting"?

ooh, I can't see ZPT really doing either directly: surely the form's action 
would be a script? The only case I've seen is dealing with possibly empty 
result sets or needing to pre-process results for particular presentation 
needs (in columns rather than rows). But even so the important thing is that 
the ZPT *declares* everything so you stay in the same mode of speech as it 
were. Just as your PythonScript will essentially be based around variable 
checking and transformation and your SQL about storage and retrieval. 
Debugging may involve switching between them a few times and ExternalEditor 
is your friend, but the important thing is that you can focus on each bit in 
isolation.

It's anecdotal but I recently had to do some work on a PHP site and came 
across the usual mix of SQL embedded in PHP embedded in HTML. While the stuff 
I was looking at was fairly cleanly typed it was still very frustrating as I 
had to rewrite entirely for a simple change. This happens because there is 
little or no incentive to abstract in the inline scripting world whereas the 
ZPT / Script approach makes it imperative.

> I've just made a transition in what I'm curently working on from using
> scripts which call ZPTs (Which I found mightily confusing WRT to
> namespace and scope issues - e.g. where a script called a ZPT which in
> turn called a script - yuck!), to exclusively using ZPTs which call scripts.
> 
> /I/ feel as though I've now got a much more intelligible paradigm - but
> I'm not sure that it doesn't still qualify as in-line scripting ...
> although of course in any one document there is no mix of logic and
> presentation (aside from a few conditional statements).

Sounds fine to me: it is generally possible to see how things interact simply 
from the folder structure. I normally work in a similar manner although I 
normally pass forms to scripts to valid and process and get them to add 
values to the request if necessary, ie. when passing error messages as I much 
prefer this over TALES options.

However, Jim Penny made a very good case for having a PythonScript 
essentially be the index_html calling ZPTs or other objects as required this 
being a good way of preventing unpleasant or unexpected things happening. I 
can't find it locally or online, maybe he can repost it.

Charlie



More information about the Zope-DB mailing list