An Early Look At What's Coming In PHP V6
IndioMan writes "In this article, learn about the new PHP V6 features in detail. Learn how it is easier to use, more secure, and more suitable for internationalization. New PHP V6 features include improved support for Unicode, clean-up of several functions, improved extensions, engine additions, changes to OO functions, and PHP additions."
Update — May 7th at 16:47 GMT by SS: IBM seems to have removed the article linked in the summary. Here's a different yet related article about the future of PHP, but it's a year old.
without wanting to be overly sarcastic..
What features are they gonne break this time?
All very good. But there is no set release date; I wonder when PHP 6 will be released?
They have been working on PHP 6 since at least 2005, and from monitoring announcement etc., I haven't seen any signs that they are nearing a release.
I am definitely no PHP expert so perhaps I am wrong but it seems that much of what is being changed is backtracking due to bad language decisions from the beginning. Sadly I think PHP developers with legacy code are going to be paying the price for several versions to come.
Play me online? Well you know that I'll beat you. If I ever meet you I'll "/sbin/shutdown -h now" you. -Weird Al, kinda.
are these ass clowns still planning on using \ for namespaces?
Do you even lift?
These aren't the 'roids you're looking for.
Given that PHP 6 was "rumored" to be out at least a year ago. I can't decide if the title "An Early Look" is meant to be ironic, or is just a sad indicator of progress.
Despite that, I would say that three things have recently happened demonstrating the improvement in quality of PHP:
I would say that (1) and (2) easily are more important for the language than is (3). PHP 5.3's improvements should be a huge change: Namespaces (I know there's a huge amount of hate for this implementation: get over it. It's going to be very useful), Closures / Lambda Functions, and Late Static Bindings in particular make it hard to wait so long for PHP 5.3.
So, stop talking about PHP 6! Lets get PHP 5.3 out.
clean-up of several functions
Does that include safe_quote_string_this_time_i_really_freaking_mean_it, or do_foo(needle, haystack) and foo_do(haystack, needle)? At least it gets namespaces after all this time, even if they're almost deliberately ugly.
Dewey, what part of this looks like authorities should be involved?
Like any other computer science problem, break it into pieces (think Divide and Conquer). Loading 88MB file into memory is not going to work by default anyhow, unless you set the memory limit in PHP from the default you will get out of memory errors every time. I think even a find/replace in a Windows app like Notepad or Notepad++ will "work" but it will definitely be slow. When I used to search large logs I would use some sort of file splitter and search each file itself.
-- Brought to you by Carl's JR
My items to fix: - Remove the "goto" statement that will be introduced in 5.3 (WHY JESUS, WHY??); - Stardandize function names (current samples: str_replace, html_ entity_ decode, htmlentities, htmlspecialchars_decode); - Improve array speed (for simple arrays, use internally one simple C array/list - current days, any array is a map); - Insert optional configurations by project (and not by host); - Remove function alias; - Provide optional typing for functions and parameters, but in a simple and consistent way (no strange notations); - Remove old extensions, like PDF paid extensions (and please, insert any open and official PDF extension); - As any language, provide a way of store compiled regex, avoiding compile them all the simple regex call for the same task; - Provide legacy support for PHP5 application as separated download (or at least allow PHP6 and 5 in the same host - we suffer a lot to find PHP5 Hosting in the earlier times, due the impossibility of run PHP4 and 5 at the same host).
So let's say you've got a global variable, $n
And let's say you're using it in a module, Foo
And because scattering global variables everywhere is a stupid idea that will lead to much pain, let's say you've decided to use namespaces in PHP6.
Now, in your main script, let's say you happen to be using a variable $Foo, for no particular reason.
What does this do?
<?php
echo "Hello $Foo\n";
?>
$x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
$x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
One thing I hope PHP would have is GUI stuff for both Windows and Linux. Its a great language for everything, and I use it constantly for scripts and other stuff. I've even written ircbots and servers with it, and they all work great and are nice to work with.
However the GUI design with the existing tools is just pain in the ass, and it doesnt offer a good way to turn your code into machine code.
I do understand that theres programming languages like c/c++ and delphi and several others, but from all of those php is the nicest to use, even for non-webpages stuff.
I dont think it would be that hard to implement such, given theres people to do it and understand how PHP can be greatly used for non-webserver stuff aswell. Or is there something against it that I havent thought of?
One of these things just doesn't belong
python:
myArray.append(myvalue)
ruby:
myArray.push(myvalue)
objective-c:
[myArray addObject: myvalue]
smalltalk:
myArray add: myvalue
PHP:
array_push($myarray, $myvalue)
In the finest tradition of PHP, they made Unicode behaviour dependent on a setting. Have these people learnt nothing from the past? magic_quotes anyone? Bleh. All languages have their warts, but the amount of bad design decisions in this one is just staggering.
Ubiquity is a pretty compelling feature.
I mean, BeOS is pretty bitchin', but I'm not spending any of my time on developing applications for it.
Potato chips are a by-yourself food.
Too bad Slashdot still wonâ(TM)t.
I mean, won't.
Alexander Peter Kristopeit bought his basement from his mommy for one dollar.
they have actually turned off the register_globals feature (really this time it won't work). If you try to use it you get an error message that says RTFM (ERROR: ID-10-T)
"i lost my dignity on a slippery wiener"
Because it's syntactically similar to C. It's remarkably close to what C++ should have been---C with classes, integrated hashes, variable-length arrays, and usable string manipulation. Thus, for long-time C programmers, it's a very natural language to pick.
Check out my sci-fi/humor trilogy at PatriotsBooks.
I've programmed in both C and C++ and I've used PHP GTK and I'd choose X86 Assembler to build a GUI before I choose PHP for desktop GUI development. And all of the benefits you mentioned are almost completely alleviated with Boost
Excuse me while I gather the virgin sacrifice and assemble the pentagram required to solve your problem
Loading 88MB file into memory is not going to work by default anyhow, unless you set the memory limit in PHP from the default you will get out of memory errors every time. I think even a find/replace in a Windows app like Notepad or Notepad++ will "work" but it will definitely be slow. When I used to search large logs I would use some sort of file splitter and search each file itself.
And here the rest of us are grepping and sedding multi-gigabyte files without thinking twice. Seriously, what's your idea of a large file?
Dewey, what part of this looks like authorities should be involved?
Oh and $array[] = $value;
Coding, you should learn it.
Or maybe the PHP designers should, cuz I know quite a few programming languages and that syntax does not look like "append a value to an array" to me. It looks more like some kind of borked pointer assignment, or a way or re-initializing an array to contain a single value.
Breakfast served all day!
That's so cliché.
PHP: its like fast food..
You know its bad for you...
You feel like crap after eating it...
But damnit, its right there, oh so conveniently located on the way to work, and sometimes a greasy cheeseburger just hits the spot, even though you know you'll pay for it later in heartburn and much later in high cholesterol and love handles, even though right now its really cheap on the wallet.
Its a guilty pleasure.
And while you're sucking down that greaseball burger, you see the local soup and salad restaraunt and think "next time, I'll eat right.."
But come the next day and you see that taco joint and..
-- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
here's the correct one: http://www.ibm.com/developerworks/opensource/library/os-php-future/
I didn't mind PHP until I tried porting a a PHP text processing application I'd written into C++. The conversion into C++ (with STL and Boost) was essentially line-for-line, so the lines of code was the same, but the C++ was more readable. The PHP runtime was 32ms, while the C++ was 1.9ms.
Even in PHP territory, PHP wasn't giving any advantages, but several disadvantages.
PHP is much, much closer to C than C++ with truckloads of STL piled on top. Ask a C programmer to comprehend that mess and you'll likely have a suicide on your hands. It is very un-C-like. The point is that the PHP syntax for arrays is very nearly identical in behavior and syntax to C, just with lots of extra functionality (variable length associative array). I never said that C++ couldn't do those things, but as far as I've seen, when you do it in C++, you're generally way off the deep end as far as being syntactically familiar to C programmers.
I guess what it comes down to is this: if you think templates are elegant, then we will never agree about what makes a good language design. From my perspective, templates are what happens when somebody forgets that we have a perfectly good C preprocessor and decides to reinvent the wheel with a clumsy syntax that doesn't provide anything more than what C preprocessing could already provide, wedging the concept into the language itself for no apparent reason. It is anathema. It is absolutely the antithesis of good language design.
As for OO in PHP, I don't see why you think dynamic typing decreases the value of object-oriented programming. If you really are mostly using the same code with different underlying types, then there's little point in doing OO, but in my experience, that's the exception rather than the rule. Most of the situations where I've used OO with polymorphism, I've had polymorphism, but the underlying implementation has differed substantially, and the only thing similar was the method name (and the general concept for what the function does).
Also, it is nice to use classes even when you don't need polymorphism. This reduces pollution of the global function namespace. It also makes it easy to create complex data structures that make life easier. (PHP doesn't have the notion of a struct, so you have to either use a class or an associative array.)
Finally PHP is still very much a typed language. It's not like there is no notion of types and everything is polymorphic with everything. The type of a variable is determined when the variable is assigned, and some types can be coerced into other types in certain use cases, but it isn't universal. I can't do if ($arrayA < $scalarB), for example. PHP even has the notion of casting to force type conversion just like you do in C. For example:
function myfunc($mynumber) {
...
$mynumber = (int)$mynumber;
}
Dynamic typing doesn't mean the types aren't there. If you call a method on an object that doesn't exist on that object, it is still an error. And so on. Dynamic typing just makes it a little easier to shoot yourself in the foot by not throwing up an error when you make the assignment or function call in the first place. :-)
Check out my sci-fi/humor trilogy at PatriotsBooks.