PHP6 made even easier for you to write feature filled PHP applications. PHP supports almost all ISPs , Now-a-days it is used in Most popular Web design and development companies like Yahoo!, Google and using for millions of domains. New versions of PHP aim to add to this success by introducing new features that make PHP more usable in all cases and more secure in others areas.This article main focuses on the changes for PHP V6 — some of them back-ported or drawbacks in older versions PHP V5.x. Php6 new features made even easier for you to write feature-filled PHP applications. Unicode Unicode at present can be set on request basis. This make PHP having to store both Unicode and non-Unicode variants of class, method and function names in the symbol tables. In PHP6 Unicodesetting made for server wide, not request wide. Turning Unicode off where not required can help performance and they quote some string functions as being up to 300% slower and whole applications 25% slower as a result. The decision to move it to the php.ini in my mind does take the control away from the user, and puts it into the hands of the Web Host. Register Globals Register Globals this is one feature is finally going in php6. It will no longer exist php.ini file setting, and if found it in ini file it will raise an E_CORE_ERROR. This means that PHP6 will finally break all PHP3 era scripts no recourse at all but to recode it. this is a big move, but a needed one to remove in php. Magic Quotes Magic quotes next important feature of PHP is also removed form PHP6, It will no longer exist php.ini file setting, and if found it in ini file it will raise an E_CORE_ERROR as like Register Globals. Removing this will impact magic_quotes, magic_quotes_sybase and magic_quotes_gpc. Safe Mode Deprecated Safe Mode feature of PHP is also removed form PHP6, This may please developers who have web hosts that insist upon safe mode. It also will no longer exist php.ini file setting, and if found it in ini file it will raise an E_CORE_ERROR. The main reason behind removing this to make php6 more Secure. PHP6 Made 'Var' to 'public' PHP4 used 'var' within classes. PHP5 raises a warning under E_STRICT when ‘var’ is used . This warning will be removed in PHP6 and instead 'var' will mean the same thing as 'public'. This is a nice move but I if anyone has updated their scripts to work under E_STRICT in PHP5 it will be a redundant one for them. PHP6 will Throw error for Return by Reference
Both '$foo =& new StdClass()' and 'function &foo' will now raise an E_STRICT error. zend.ze1 compatbility mode to go ze1 always tried to retain old PHP4 behaviour, but apparently it "doesn't work 100%" anyway, so it will be removed totally and throw an E_CORE_ERROR if detected. Freetype 1 and GD 1 support to go Support for both freetype1 and gd1 old libssupport are removed. dl() moves to SAPI only Each SAPI will register the use of this function as required, only the CLI and embed SAPIs will do this from now on. It will not be available elsewhere. FastCGI always on The FastCGI code will be cleaned up and always enabled for the CGI SAPI, it will not be able to be disabled. Register Long Arrays to go Remember the HTTP_*_VARS globals from yesteryear? Well if you're not already using $_GET, $_POST, etc - start doing so now, because the option to enable long arrays is going (and will throw an E_CORE_ERROR). Extension Movements The XMLReader and XMLWriter extensions will move into the core distribution and will be on by default. The ereg extension will move to PECL (and thus be removed from PHP). This means that PCRE will not be allowed to be disabled. This will make way for the new regular expression extension based on ICU. The extremely useful Fileinfo exntesion will move into the core distribution and enabled by default. PHP Engine Additions 64 bit integers A new 64 bit integer will be added (int64). There will be no int32 (it is assumed unless you specify int64) Goto No 'goto' command will be added, but the break keyword will be extended with a static label - so you could do 'break foo' and it'll jump to the label foo: in your code. ifsetor()
It looks like we won't be seeing this one, which is a shame. But instead the ?: operator will have the 'middle parameter' requirement dropped, which means you'd be able to do something like this: "$foo = $_GET['foo'] ?: 42;" (i.e. if foo is true, $foo will equal 42). This should save some code, but I personally don't think it is as 'readable' as ifsetor would have been. foreach multi-dim arrays This is a nice change - you'll be able to foreach through array lists, i.e. "foreach( $a as $k => list($a, $b))". {} vs [] You can currently use both {} and [] to access string indexes. But the {} notation will raise an E_STRICT in PHP5.1 and will be gone totally in PHP6. Also the [] version will gain substr and array_slice functionality directly - so you could do "[2,]" to access characters 2 to the end, etc. Very handy. Changes in Object Oriented Concepts Static Binding A new keyword will be created to allow for late static binding - static::static2(), this will perform runtime evaluation of statics. Namespaces It looks like this one is still undecided - if they do implement namespaces it will be using their style only. My advice? Don't hold your breath! Type-hinted Return Values Although they decided against allowing type-hinted properties (becaue it's "not the PHP way") they will add support for type-hinted return values, but have yet to decide on a syntax for this. Even so, it will be a nice addition. Calling dynamic functions as static will E_FATAL At the moment you can call both static and dynamic methods, whether they are static or not. Calling a dynamic function with the static call syntax will raise an E_FATAL. Additions to PHP APC to be in the core distribution The opcode cache APC will be included in the core distribution of PHP as standard, it will not however be turned on by default (but having it there saves the compilation of yet another thing on your server, and web hosts are more likely to allow it to be enabled)
Hardened PHP patch This patch implements a bunch of extra security checks in PHP. They went over it and the following changes will now take place within PHP: Protection against HTTP Response Splitting will be included. allow_url_fopen will be split into two: allow_url_fopen and allow_url_include. allow_url_fopen will be enabled by default. allow_url_include will be disabled by default. E_STRICT merges into E_ALL Wow, this is quite a serious one! E_STRICT level messages will be added to E_ALL by default. This shows a marked move by the PHP team to educate developers on 'best practises' and displaying language-level warnings in a "Hey, you're doing it the wrong way". Farewell <% They will remove support for the ASP style tags, but the PHP short-code tag will remain () - so to those on php general who reckon the short-tag is 'depreciated' CAT Technologies implementing PHP6 in application development by removing features likes of register globals, magic quotes, long arrays, {} string indexes and call-time-pass-by-references and forcing all developers to clean up their code making use of php6.