Hi,
Some of the things I want to see in PHP 6:
New designed Standard Library:
* Clearly defined conventions for organization, naming and error handling..
* Use Namespaces and groups functions by their purpose ("net", "strings",
"arrays",…)
* Promote SPL functionality ("spl_autoload_register", Data structures) to proper
Core APIs by dropping the "SPL" prefix.
* Converts all resource based APIs (file, stream,…) to Object Oriented APIs
* Maybe find a way to share the standard library between multiple implementations
of PHP (HipHop, Quercus, Phalanger).
A better parser which is more maintainable and makes it easier to implement
language features every modern programming language has.
* Slicing operators for Arrays (and Strings?)
* Splice Operator: splits an array into arguments for a function call.
Then we can finally remove call_user_func_array().
* Optional Semicolons? I recently started doing some programming in Go and I
really like this.
Clean up the language:
* Remove the old array() declaration syntax.
* Replace some keywords with syntax constructs. For example remove list() and
use multi assignment syntax like $var1, $var2 = foo(); or remove the array()
syntax. Makes names like "List" and "Array" usable as Userspace class names
again.
Remove features which were made obsolete by the SPL:
* __autoload() — was made obsolete by spl_autoload_register()
* dir() — DirectoryIterator, probably make dir() just return a DirectoryIterator.
* probably more.
Make some runtime features more consistent:
* Autoloading for all kind of missing constants (function names, namespace constants)
* Function importing just like Class importing
* Language Specification which makes it easier to maintain competing implementations.
There's probably a lot more we could do, but these are some things from right the
top of my head.
--
Christoph Hochstrasser
http://twitter.com/hochchristoph | http://christophh.net | https://github.com/CHH
Am Freitag, 13. Juli 2012 um 17:33 schrieb Anthony Ferrara:
> Hey all,
>
> I know that 6.0 was originally supposed to be the unicode conversion of the
> engine. However it appears that all progress on that has stopped for quite
> some time.
>
> So, I was curious if we could start a conversation around what 6.0 would
> look like if we didn't go the unicode route. What would be the major
> changes that we'd base it on.
>
> Here are a few of the ideas that have been floating around in my head.
>
> 1. Change the error handling system from the current E_* system to typed
> exceptions for everything but advisory errors (E_STRICT, E_NOTICE,
> E_DEPRECATED). Why? Because the current error system encourages ignoring or
> not checking what the error was, and it makes defensive programming quite
> difficult. This is arguable and preference for sure, but it's a major
> change that could have large benefits.
>
> 2. Make namespaces first-class meta-objects. That way, you could have
> namespace private and protected classes, functions, variables, etc. This
> would allow for better scoping of modules...
>
> 3. Make all zval types pseudo-objects. Basically enabling something akin to
> auto-boxing allowing a significant amount of the standard library to be
> eventually deprecated in favor of acting on methods (not initially, but
> opens the door).
>
> 4. Rewrite the entire parser completely. I keep hearing about how bad PHP's
> parser is, and how it's growing out of control. Perhaps this is a good time
> to rewrite it (perhaps changing semantics slightly) to be better adapted
> towards future changes...
>
> I'm not saying all of them are solid. I'm not saying any of them are solid.
> But hopefully this can spark a discussion around it...
>
> Thoughts?
>
> Anthony