PHP5 Just Around the Corner 85
HitByASquirrel writes "Just doing the rounds and I found that Zend has released PHP 5.0 Beta 4: 'This fourth beta of PHP 5 is also scheduled to be the last one (barring unexpected surprises, that did occur with beta 3). This beta incorporates dozens of bug fixes since Beta 3, rewritten exceptions support, improved interfaces support, new experimental SOAP support, as well as lots of other improvements, some of which are documented in the ChangeLog.' Hopefully they won't have any 'unexpected surprises' and we'll see this before summer!"
Re:The superiority of PHP over Pearl (Score:2)
get a life, copy-cat
Re:The superiority of PHP over Pearl (Score:4, Informative)
use but,
just wanted to point out
1) php has no real threading support e.g. other than
simple webscripts are impossible to create
2) using whatever wierd forking in your php scripts
still leaves you without shared variables and so on.
3) php has still very slow interface to shared memory
(shmop), which makes it even more pointless to use in
real enterprise applications even for web
4) even the new php-s oop structure is still out of date
when compared to java or c++ or even perl (where are
protected variables and callbacks? why does the php still
not have a normal automatic class searching system and
still relies on user own written inclusion lines? etc.)
5) php developers are heartlessy disgarding every kind of
backward compatibility with every new minor version they
write, e.g. your old scripts which worked finely for 4-5
months may be buggy without you even knowing it after 1
mysterious update.
just wanted to make this statement. php has still a long
way to go to make it to the real enterprise market where
perl and java are already ready. the new version of php
doesn't include any major necessary components to achieve
the raise to real enterprise developement market.
still hope they will make the jump to real applications
cause the idea of php is quite good. only the
implementation needs be improved. php6 maybe ?
Re:The superiority of PHP over Pearl (Score:2)
Possibly PHP targets a different market. *HP did originally mean Home Pages, IIRC.
Thus, PHP may be positioning itself to support individual efforts, or prototyping for the enterprise market. Not nececcesarily a Bad Thing, more
Re:The superiority of PHP over Pearl (Score:2, Informative)
(From http://www.php.net/zend-engine-2.php [php.net])
and :
Re:The superiority of PHP over Pearl (Score:2)
So I'd rather have a couple of tools which are all REALLY good in their own niche.
And if I want the goodness that I can use in java, I'll use java - if I want to code for fun, I can use PHP - and I sure hope it stays that way!
Re:The superiority of PHP over Pearl (Score:5, Insightful)
That has to be the absolute worst. Not only do the minor versions break large numbers of scripts, they do it for the sillest reasons - php has some incredible powerful and language changing options (like magic quotes, which entirely change how you handle input), yet they insist on changing the defaults for these every time they increment a number. The real business world doesn't have the time and re$ource$ to be constantly updating code and mangling configurations just because some open source team can't make up their mind.
Re:The superiority of PHP over Pearl (Score:1)
Conversely, open source projects shouldn't hold themselves up because real world businesses are too busy cutting costs to look after their intellectual assets.
not_cub
Re: PHP and Backward Compatibility (Score:5, Interesting)
You said...
Thank you for bringing that up. That's been my biggest complaint with PHP. Some examples include:
It seems that any time there is an update for PHP, something else gets broken. I cringe when my sys admin tells me he wants to update it, because I know it's going to lead to hours of debugging work that I shouldn't need to do.
Re: PHP and Backward Compatibility (Score:3, Interesting)
For example, the current python version returns 2 when you type 5/2. In Python 3.0, the behavior would be changed to returning a float (2.5).
This could break plenty of scripts, such as parse_lines(file_size/2) where the argument could only be an int. Now, to the magic:
These future changes are announced years before the actual forced change in the language. However, for your current Python 2.3 program you can import
Re: PHP and Backward Compatibility (Score:2)
read the ChangeLog that gets posted with each new version to see what changes. that might give you an idea of what is going to break
Re: PHP and Backward Compatibility (Score:2)
The point is some of these changes ARE NOT IN THE DOCUMENTATION OR CHANGELOG. The behvaiour of 'get_object_vars()' changed dramatically from 4.1.2 to 4.2 without a word in the changelog. I couldn't even find the commit where the behaviour changed. Only months later did someone acknowledge that it had changed.
Re:The superiority of PHP over Pearl (Score:3, Interesting)
?
I would expect that serious PHP application engineers would be leaving tons of features unused rather than risk needlessly rewriting tons of code. Who,
Re:The superiority of PHP over Pearl (Score:2, Insightful)
What is an example of such need? Web-based interfaces generally don't need that kind of multi-threading.
php has still very slow interface to shared memory (shmop), which makes it even more pointless to use in real enterprise applications even for web
Php philosphy is generally to use the database for shared information, not RAM. If you want an "enterprise" application, then get a big-iron RDBMS like Oracle,
Re:The superiority of PHP over Pearl (Score:1)
>>generally don't need that kind of multi-threading.
for example an web page which would need to
fetch data from multiple databases on different
machines at the same time..
doing it in multiple threads would be much faster
than in one thread
Re:The superiority of PHP over Pearl (Score:1)
fetch data from multiple databases on different
machines at the same time...doing it in multiple threads would be much faster than in one thread
Only if there are very few users. If there are a lot of simultaneous users, then it probably won't make much difference because you would have at least twice as many queries in the process queue at any given time.
unexpected surprises? (Score:1)
Re:unexpected surprises? (Score:2)
this release is supposed to be the last beta for 5.0, and the next release should be a production one, the surprise isn't in the beta itself, the author wants the production release to be next, and not another beta.
No upload progress support in 5.0 (Score:3, Informative)
Too bad. Now we need to wait until PHP5.1 or something.
And meanwhile stick with PHP sourcecode patch or perl method which is nightmare.
Re:No upload progress support in 5.0 (Score:2, Informative)
Re:No upload progress support in 5.0 (Score:2, Informative)
Sorry, that link isn't at all helpful, it gives zero technical details.
The problem of user feedback on file upload is a browser issue, plain and simple. There isn't any *reliable* way of faking it on the server, various kludges involve frames, Javascript, etc, all of which have their various tradeoffs. I very much doubt anything like this will go into PHP.
Re:No upload progress support in 5.0 (Score:2, Insightful)
Re:No upload progress support in 5.0 (Score:1)
A progress bar for file uploads is clearly the responsibility of the user-agent.
Why no lexical closures? (Score:5, Insightful)
Come on, guys, learn something from history, avoid making the same mistakes over and over again, and add lexical closures to PHP.
Re:Why no lexical closures? (Score:3, Interesting)
Re:Why no lexical closures? (Score:2)
Please elaborate on this concept.
Closure (programming) [wikipedia.org]
Re:Why no lexical closures? (Score:2)
Re:Why no lexical closures? (Score:5, Informative)
function f($a, $b) { return strcmp($b, $a); }
usort($array, 'f');
you could just write something like
usort($array, function ($a, $b) { return strcmp($b, $a); });
With this, functions would be first-class objects, which probably complicates the internals of the language, but it could be added when the reestructuring for improved OOP was done.
Re:Why no lexical closures? (Score:4, Insightful)
Maybe I'm missing something, but it seems defining the function inline makes the code less readable, and more cluttered. PHP isn't really about being able to mimick the perl one line "goodness". Written properly, php code is very readable and easily maintainable. If feel that's one of the major reasons for it's popularity.
That and the low learning curve and excellent online docs. I have a one stop shop for php documentation. I rarely need any other docs besides php.net/searchstring
Re:Why no lexical closures? (Score:4, Interesting)
The matter is that (1) you are referring to functions by their name, not as an object, and (2) that you can only write functions that refer to global variables.
Maybe I'm missing something, but it seems defining the function inline makes the code less readable,
Lexical closures have nothing to do with whether the function is written in-line or not. It has to do with functions being data objects rather than strings, and it has to do with variables being resolved correctly.
Just think about this snippet for a moment: That's how things should work.
Re:Why no lexical closures? (Score:3, Informative)
usort($array, create_function('$a,$b', 'return strcmp($b, $a);');
Which is relatively close.
Re:Why no lexical closures? (Score:2)
Doing function pointers right isn't hard and the current design only has disadvantages. Why is this still not fixed in the fifth major version of PHP?
Re:Why no lexical closures? (Score:4, Funny)
The question is, does PHP have tailcall elimination, or does jack blow the stack?
Re:Why no lexical closures? (Score:4, Interesting)
Re:Why no lexical closures? (Score:3, Insightful)
Closures aren't "used for anything", they just give the language straightforward and sensible semantics, as opposed to the mess that results when you name functions by strings, like PHP does.
Although they may not be as "clean" as pure closures, eval and execute are conceptually simple and will do the job for the occassional times dynamic execution is needed.
What
Re:Why no lexical closures? (Score:2)
They also happen to let you nest functions in the obvious way, as in:
That simplifies code significantly and removes the need for global variables that can get
Re:Why no lexical closures? (Score:1)
function mysort($array,$direction) {
$toEval = $direction . ' * strcmp($a, $b) ';
return usort($array, $toEval);
}
(Note the use of single quotes so that $a and $b are treated as parts of the literal string.)
Like I said, such techniques may not be technically superior to closures, but they are conceptually easier for most programmers, and situations where closures are used are perhaps not common enough to
Re:Why no lexical closures? (Score:2)
No, you cannot do "the same thing". The code you wrote does something entirely different. In fact, it may well open up a gaping security hole.
Like I said, such techniques may not be technically superior to closures, but they are conceptually easier for most programmers,
Closures were in Pascal, for God's sake, one of the simplest teaching languages ever used. Pascal was trivial compared to the complexi
Re:Why no lexical closures? (Score:1)
Yes, one has to be careful with eval/execute in that regard. In this case the parameters are likely "internal", so it would not be a problem.
because that state of mind and skill level is bound to result in poor software quality and lousy security.
Well, it seems to be what companies want, so it looks like PHP is bound for "success", and languages like LISP ar
Re:Why no lexical closures? (Score:2)
Sure, the same companies that have gaping security holes and lose your credit card numbers to hackers. The fact that there is a lot of stupidity out there shouldn't give people an excuse to contribute to it.
and languages like LISP are frowned on by CEO's.
Yes. Lisp was a hacker language that got adopted from the bottom up, then it was overhyped and oversold. And when it turned out to be not so great in real-world s
Re:Why no lexical closures? (Score:1)
In other words, you don't like the syntactic sugar. PHP has the mechanism, you just don't like it's looks. And you're surprised that this isn't a hot issue in the development of the language?
Re:Why no lexical closures? (Score:1)
PHP has create_function() [php.net].
Re:Why no lexical closures? (Score:1)
Very easy to learn if (Score:2, Insightful)
Half of it is just learning database usage; the other half is knowing C-style (C/C++/C#/Java) syntax, and it really shouldn't be hard to adapt to even if you're not familiar with any of those.
The best part is that you can even use it on a serve
Re:Will the docs still be full of Perl envy? (Score:2)
Uhm, huh? Is this a troll? The only *really* good thing PHP has going for it is the online documentation. The user comments make PHP bearable to use. They explicitly provide real-world examples of how to do things and how to work around kludgey PHP interfaces and bugs. PHP's documentation makes a so-so product into a good product. Perl is a really good procut that would be a lot better if it had something similar. It's online FAQ is good, but somehow seems to never contain *MY* frequently asked questions.
Re:Will the docs still be full of Perl envy? (Score:1)
of whether the language is any good. The *first* thing the PHP crowd needs to
fix is the documentation. It ought to be rewritten from scratch.
Uhm, huh? Is this a troll? The only *really* good thing PHP has going for it is the online documentation. The user comments make PHP bearable to use. They explicitly provide real-world examples of how to do things and how to work around kludgey PHP interfaces and
Re:Will the docs still be full of Perl envy? (Score:1, Interesting)
Are they rewriting the docs to actually explain the features of the language and how to use them?
No, the current documentation does that just fine. There's a tutorial, the user manual, and extensive user-contributed notes on the manual, all linked to from the PHP homepage.
I tried to learn PHP, but I got really tired of reading about how much "better" PHP is than Perl because it's Not CGI(TM).
Care to point out where the PHP documentation states that? Or are you just judging the language by a voca
Re:Will the docs still be full of Perl envy? (Score:1)
> > much "better" PHP is than Perl because it's Not CGI(TM).
>
> Care to point out where the PHP documentation states that? Or are you
> just judging the language by a vocal minority of its users?
Huh. It appears to be *gone*. It was there, honest. I googled for PHP,
went to the first result that wasn't a paid advert, and clicked on a link
that said something like "tutorial" or "documentation". This was a little
while ag
Re:Will the docs still be full of Perl envy? (Score:4, Informative)
I have experience with both PHP and perl. I have a raging bias against PHP, but I'll try to tell it straight:
PHP's a lot easier to install than mod_perl, full stop. That is to say, mod_perl might be a package install away, but configuring it to get its features working takes some work with trial and error. By being essentially an embedded evaluator first and foremost and last, PHP doesn't confuse you by dealing with apacheisms like request handler objects. Of course it doesn't confuse you with having any real general-purpose functionality either (I'm told there's actually a gtk binding, but I can't seriously consider this as more than a toy).
PHP's syntax is more regular and reduced than perl's. It has only one sigil, $foo, as opposed to $foo @foo %foo and $foo. It lacks most of the line noise constructs like $#foo. References are managed internally (though you must explicitly pass by reference to functions) so there's no difference in syntax between an array and a reference to one. PHP5 will pass objects by reference by default. PHP4 always passes a copy unless you explicitly pass by reference. I found this to be really quite a misfeature in PHP4 that I'm happy to see fixed. I certainly hope the === operator has its extremely broken semantics fixed (it does the deepest of comparisons instead of the shallowest) but I'm not holding my breath.
PHP doesn't auto-splice lists. In fact it doesn't auto-create them from the various contexts perl does, you must use the "array" function to get a list. One gets used to this, and ultimately it's not much worse than lisp's list function. Arrays are much like lua arrays, and can have numeric or string keys, there is no separate "hash" type or hash syntax to go with them.
PHP4 has no structured exception handling at all. In fact there's no mechanism whatsoever to trap many errors that simply result in a dead stop of execution, with an error message if you're lucky, otherwise no response whatsoever, more akin to a killed CGI. Older PHP4 scripts are rife with uses of automatically populated global variables that make them targets for cross-site-scripting and sql injection. Don't trust a PHP script from before 2002 or so. PHP5 is supposed to address these issues.
Not a troll - PHP docs woefully inadequate (Score:3, Interesting)
PHP docs... (Score:2, Insightful)
The function reference is usually quite good, and the contributed comments make a good reference excellent. It could be further grouped to become easier to navigate, grouping all the "database access" functions together in a deeper heirarchy, for example. (PHP in general is suffering from having too many functions IMHO - that may be fixed in PHP5 though).
However, the language reference, which is intended as an introduction to the language, is not gr
O'Reilly book (Score:2)
Re:Will the docs still be full of Perl envy? (Score:1, Informative)
Also if you need a good learning tool for PHP, try the O'Reilly PHP cookbook. It's a wonderful book, very clearly and thoroughly written. No preaching or "my language is better than yours" crap, just good advice from a couple guys who use PHP to get work done.
Besides, if you know Java, PHP5 is pretty much a no-brainer.
PHP5 References (Score:5, Informative)
Some interesting slashdot PHP5 references:
"PHP5 is well under development and a beta is expected out by March 2003 and released summer 2003" [slashdot.org]
Introduction to PHP5 [slashdot.org]
General PHP5 References:
Changes in PHP 5/Zend Engine 2.0 [php.net]
Pidget: The PHP Widget Library [pidget.org]
Re:PHP5 References (Score:1)
PHB (Score:3, Funny)
How Much? (Score:1)
Re:How Much? (Score:4, Interesting)
There are several free third-party caches that work just fine. The PHP folks even provide links to them.
That being said, I work for a company that has a high-traffic site -- about 3 million page-views per day, and we run it without a cache. It takes eight load-balanced web servers to do this, and the main bottleneck is response time from the MySQL server. (This is not a slam against MySQL -- it's chugging along at about 10,000 queries per second.) We could get by with less hardware if more non-sensitive data was shoved into cookies instead of the database and more trivial UI stuff was migrated to client-side Javascript.
PHP's main problem, in terms of implementation, is that it's a bit of a memory hog. There's a huge amount of metadata that goes along with PHP variables, and a PHP array of n elements consumes several times as much memory as the equivalent Perl array. If this has been addressed in PHP 5.0, it will be a big damn deal.
out of curiosity... (Score:2)
If not, and MySQL is your bottleneck, I'd be curious to know how it affects that when enabled.
.02
cLive ;-)
Re:out of curiosity... (Score:2)
Don't forget to check Zope (Score:4, Insightful)
There is much better alternative to PHP. It's called Zope [zope.org]. In fact, Zope has two similar (but very superior) markup languages: DTML and ZPT, both using Python for underlying scripting.
Just go to the site and check brief functional description - you will be surprise how far their technology has been developed for the last year.
Personally, I was developing on PHP before (like SquirelWebMail plugins, database applications), but I don't see any reason to write PHP anymore. All my current and upcoming web-projects are only Zope-based.
Re:Don't forget to check Zope (Score:1)
That is comparing apples to oranges. Zope is a web publishing framework, not a programming language. There are publishing frameworks for PHP also. Zope leaves a bad taste in some people's mouths, as if it is an attempt to be an OO paradise tickling your OO glands rather than being practical. Some also say it is not relational-friendly
Re:Don't forget to check Zope (Score:1, Interesting)
Zope is a stunning example of over-engineered mediocrity.
Re:Don't forget to check Zope (Score:2)
That reminds me Perl: you can cook a quick hack very quickly, but no chances you can read it after few weeks. In other words: your job can be done with PHP quickly, but it cannot be maintained after that.
Re:Don't forget to check Zope (Score:3, Insightful)
Re:Don't forget to check Zope (Score:2)
DTML documentation never said to write Python scripts instead, as DTML is a markup based on Python. On this esense, DTML is no different than PHP, just using Python (very common language even outside DTML!) as underlying scripting instead of something that you never find outside PHP.
The only advise to use something instead of DTML is to use ZPT, which is namespace-aware naturally-further generation of DTML
Unicode string support yet? (Score:1)