[Zope] RE: Any comments from ex-PHP developers?

sean.upton@uniontrib.com sean.upton@uniontrib.com
Tue, 17 Dec 2002 17:34:42 -0800


I get frustrated when reading other coders' PHP code, and I think it is
right to direct that frustration at a crappy language.

Compared to Zope/Python, PHPs weakness is a poor language, aside from
platform/framework considerations.  PHP breaks down for team development
because it inlines code and presentation, but even worse, by way of example,
is unclear method namespaces, and excessive promotion of inlline code
evaluation:

PHP is also horrible in its promotion of
specialized-functionality-module-level stuff to global namespaces.  At least
in Python, if you want to create an ftp client, you do:

from ftplib import FTP 
# I know where to look in the lib ref for this, no?
f = FTP() #I know where FTP came from, no?
f.connect('zopeserver.foo.com',8021) #
f.set_pasv(1)
l = f.dir()
#etc...

in PHP:
$conn = ftp_connect('someserver.foo.com') 
#where did this come from?
$login_res = ftp_login($conn, 'foouser','foopasswd')
$upload = ftp_put....etc

Notice the global namespaces for all the functions... You can't figure out
explicitly where these things came from (unlike Python where tracing
method/class names in code to import statements recursively is almost always
at some point going to lead you back to the library reference, and perhaps
understanding).  If this doesn't make most developers (from many other
languages - even Perl -that do this in a more modular way) concerned, I
don't know what will.

Another example: common practice of inlining execution of code in a PHP
script: 

<%
include('somesnippetofcode.php');
%>

Inline eval of code is bad.  Again, this is not explicit.  This magic
server-side-includish practice does not make sense in logic code.  You want
to criticize dtml code in Zope that does this just as much, but at least
Zope provides you with a better alternative: do logic in Python, either TTW
on on the filesystem (and either way, everything is clear becuase you call
other modules via component/object interfaces instead of inline evaluation).

Explicit is always better than implicit, except when it isn't - and trust
me, neither of these count as one of those cases.  

Sean

-----Original Message-----
From: Lennart Regebro [mailto:lennart@regebro.nu]
Sent: Tuesday, December 17, 2002 11:51 AM
To: zope@zope.org; Frederic Faure
Subject: Re: [Zope] RE: Any comments from ex-PHP developers?


From: "Frederic Faure" <ffaure@bigfoot.com>
> - Python is truly OOP : What is missing in PHP4? Multiple inheritance?

Well, yes, but mostly an object store.

> - Zope uses its own DB instead of a filesystem. But then, nobody complains
> when data are saved in other DBMS's, so why do they complain about ZODB?

This is actually a pro, not a con. :-)
The fact that that DB is also file based, and doesn't require you to set up
an SQL-database is another pro.



_______________________________________________
Zope maillist  -  Zope@zope.org
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )