On May 28, 2011, at 10:55 PM, Martin Scotta wrote:
> I really dont like to move away from PHP, but compared to others... it's
> just a template language with steroids.
> 
> and please dont get me wrong, I love PHP, it's is still my favourite but...


This has been exactly my experience when trying to use PHP in any meaningful 
way. For example, trying to use PHP as a network server:

- I immediately had to write an extension to give me access to several missing 
APIs (clock_gettime() and a number of ncurses functions not implemented in the 
ncurses extension).
- In order to use stream_select() with both network sockets and STDIN, I had to 
merge socket_select() with stream_select() in my extension, as in 5.3 
stream_select() doesn't preserve socket array keys (this was fixed in 5.4)
- To make use of pack() and unpack() for packet management, I had to 
reimplement them so as not to throw notices willy-nilly when I got bad packets. 
(Adding format specifiers that could handle useful data types not in the 
original API was just a bonus.)
- In general, I have to tiptoe all over everything to avoid getting useless 
notices/warnings for expected error conditions (such as SIGPIPE on dying 
sockets, passing zero sockets to stream_select(), trying to fopen() a 
nonexistant file, and so forth).
- No threading support.
- No preprocessor. define() makes up for only some of it, closures make up for 
some more, but still not enough. There are no mature opensource preprocessor 
implementations for PHP that I can find (just betas of various sorts), and both 
GCC's and Clang's CPPs break on here/nowdocs. More generic preprocessors (like 
m4) tend to have learning curves or problems of their own.
- (Almost) everything here: http://www.phpsadness.com/
- No Unicode.

If there is any direction for PHP 6, I'd like to see that direction be dealing 
with problems like these. PHP has been used more and more as a general-purpose 
language, when it wasn't designed to be. Addressing that would solve a lot of 
core problems. And yes, it does mean an engine rewrite.

-- Gwynne


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to