PHP Version History

Source: Internet
Author: User
Tags empty file upload functions goto new features object model string zend
PHP was originally designed to quickly build a Web page and quickly became widely accepted. The advantage is that you can embed HTML code in your code, allowing programmers to create a Web page with HTML code and PHP code in one page at a time.   This article records the history of PHP in terms of the timeline.   PHP version history in early 1995   PHP1.0 birth   Rasmus Lerdof invented PHP, a simple set of Perl scripts to track visitors ' information. This time PHP is just a gadget, its name is called "Personal home page Tool" (Personal homepage gadget).   June 1995   PHP2.0 birth   Rasmus Lerdof in C to recreate the tool, replacing the original Perl program. The most important feature of this new C-writing tool is the access to the database, which allows users to simply develop dynamic web programs. This tool, written in C, is also known as PHP/FI. It already has some basic features of PHP today.   Since Rasmus released the source code in June 1995, about thousands of users (estimated) and approximately 50,000 domain names were installed in the world by 1997.   June 1998   PHP3.0 birth   Although php3.0 was officially released in June 98, it has been 9 months of public testing before it was officially released.   Andi Gutmans and Zeev Suraski joined the PHP development project team. This is the two Israeli engineers who discovered some of PHP's drawbacks when using PHP/FI, and then decided to rewrite the PHP parser. Note that at this point, PHP is no longer called the personal home page. And change is called Php:hypertext preprocessor.   PHP3 is the first version of PHP that is most like the one currently in use, and the rewriting interpreter is the prototype of the later Zend. The most powerful feature of PHP3.0 is its scalability. It provides a Third-party developer database, protocol, and API infrastructure, and attracts a large number of developers to join and submit new modules.   May 2000   PHP4.0 release   Andi Gutmans and Zeev Suranski the biggest move in 4.0 was to rewrite the PHP code and invent the Zend engine to enhance the performance of the program and the modularity of PHP. This ZendIn fact, Andi and Zeev initials are collectively called.   uses the Zend engine, PHP has a higher performance, there are some other key features, including support for more Web servers, HTTP session support, output buffer and so on.   July 2004   PHP5.0 release   PHP5.0 's core is the Zend Engine 2 generation. It introduces a new object model and a large number of new features. For example, the introduction of PDO (PHP Data Object)   Now (February 2014)   The latest PHP has been released to 5.6, it is said that PHP6.0 is already in the development process. All PHP history code can be found in the PHP Museum.   PHP Recent versions of the functional description php4.0   with Zend engine as parser   php4.1   ADD Super global variable function, including $get, $POST, $_session, etc.   php4.2 &NB Sp Data received from the network will not be set to global variables, increasing the security of the program.   php4.3   joined the command file to become CLI   php4.4   joins Phpize and Php-config's man page   php5.0   used the Zend 2 engine. Added new keywords, including this,try,catch,public,private,protected et Strrpos () and Strripos () now use the entire string as needle. Illegal use of string offsets can result in eerror rather than ewarning. An example of illegal use: Str=′abc′;unset (Str[0]);. Arraymerge () is changed to accept only arrays. If you pass in a non-array variable, a ewarning message is emitted for each of these parameters. Be careful because your code may be frantically emitting e_warning. If the variablesorder includes "S", $SERVER should be produced with ARGC and argv. If the user specially configured the system does not create $SERVER, then this variable certainly does not exist. The place to change is that no matter how variablesorder is set, argc and argv are always available in the CLI version. The CLI version does not always produce global variables argc and argv. Objects without attributes are no longer treated as "emPty ". GetClass (), Getparentclass () and Getclass_methods () now return a consistent (case-sensitive) name for the class/method name defined, and may cause problems with old scripts that rely on previous behavior (class/method names always return lowercase). One possible workaround is to search all of these functions in a script and use Strtolower (). Case-sensitive changes also apply to Magic constants Class,method and FUNCTION. The values are returned strictly according to the name of the definition (case-sensitive). Ip2long () returns FALSE when passing in an illegal IP as an argument, no longer-1. If a function is defined in the containing file, these functions can be used in the main file and independent of whether before or after the return instruction. If the file is included two times, PHP 5 emits a fatal error because the function is already defined, and PHP 4 doesn't care. It is therefore recommended that you use include_once instead of checking to see if the file is contained and conditionally returned in the include file. Includeonce and Requireonce normalize paths under Windows, so containing a.php and a.php will only include files once. More resources php5 new features   PHP 5.1   Rewrite the data processing part of the code PDO extend default boot performance optimization more than 30 new functions more than 400 bug fixes php5.2   CLI SAPI no longer from php.ini and PHP Gets the current directory information in the-cli.ini. This is considered from a security perspective. Warning information is prompted when the 0 modulo is taken. An object can be invoked as a string through the __tostring () function. Prevents static methods of setting abstract classes from adding support for RFC (Data:stream). More resources migrated from 5.1 to 5.2   php5.3   changes:   Realpath () is now completely platform-Independent. The result is an illegal relative path such as FILE. "/.. /x "will not work. The Calluserfunc () series function uses $this even if the callee is a parent class. Array functions Natsort (), Natcasesort (), Usort (), Uasort (), Uksort (), Arrayflip (), and Arrayunique () will no longer accept objects as arguments. When you apply these functions to an object, you first convert the objectAn array. A function that passes a parameter by reference changes its behavior when it is passed by a value call. The previous function will accept the argument passed by value and will now throw a fatal error. Any function that expects to pass a reference, but that passes a constant or literal value at the time of invocation, needs to be assigned to a variable before the call. The __tostring Magic method no longer accepts parameters. Magic Methods _get, _set, _isset, _unset, and __call should always be public and cannot be static (static). The method signature is required. Now the __call Magic method is invoked when accessing private and protected (protected) methods. Funcgetarg (), Funcgetargs (), and Funcnumargs () functions cannot be used within a file when a file is include or require in a function. Goto,namespace keywords are retained. New features:   added support for namespaces. Static late binding support was added. Added goto support. Increased closure support. Added two magic methods, _callstatic and _invoke. Added Nowdoc syntax support, similar to Heredoc syntax, but contains single quotes. is the syntax of << ' EOF '. You can use double quotes to declare Heredoc, supplementing the Nowdoc syntax. You can declare constants outside of a class using the const keyword. The ternary operator has an abbreviated form:?:. The HTTP Stream wrapper treats all status codes from 200 to 399 as success. Allows dynamic access to static methods. Exceptions can be nested by adding a circular reference to the garbage collector and are turned on by default. Mail () now supports message-sending logs. (Note: Only messages sent through this function are supported.) More resources migrated from 5.2 to 5.3   php5.4   changes:   No longer supports safe mode. Any application that relies on Safe mode needs to be adjusted in terms of security. Remove the Magic quotes. To avoid security issues, applications that rely on this attribute may need to be upgraded. GETMAGICQUOTESGPC () and getmagicquotesruntime () now always return FALSE. Calling Setmagicquotesruntime () will result in a ecore_error level error. Registerglobals and Registerlong_arrays PThe hp.ini instruction was removed. The reference pass at the time of the call is removed. There is no such form as F (& $a). The break and continue statements no longer accept variable parameters (for example: Break 1 + foo () * $bar; )。 Like a break 2; Such a fixed parameter can still be used. Affected by this change, no longer allow break 0; and continue 0;. The time zone uses TZ (TimeZone) environment variable settings is no longer supported in date and time extensions. You must use the Date.timezone php.ini configuration option or the Datedefaulttimezoneset () function to specify the time zone. Instead of trying to guess the time zone, PHP will retreat back to "UTC" and issue a ewarning error. A non-numeric string offset, such as a[′foo′] where a is a string and now returns false using Isset (), returns True when using empty (), and produces a ewarning error. The offset type is Boolean and null, resulting in a enotice error. numeric strings, such as $a [' 2 '], still run as before. Note that offsets such as ' 12.3 ' and ' 5 foobar ' will be treated as non-numeric and produce a ewarning error, but they will be converted to 12 and 5, respectively, for backward compatibility reasons. Note: The following code returns different results. $STR = ' abc '; Vardump (Isset ($str [' X ']); return False in PHP 5.4 or later, but return true array in PHP 5.3 or earlier to string will produce a e_notice level error, but the result returned is still the string "array". NULL, FALSE, or an empty string that is added to an object's properties will emit a ewarning-level error, rather than a estrict. Using global variables for parameter names now can cause a fatal error. Code like function foo ($GET, $POST) {} is prohibited. The SALSA10 and Salsa20 hashing algorithms are removed. When using two empty arrays as parameters, Array_combine () now returns array () instead of FALSE. Htmlentities () will handle the Asian character set like Htmlspecialchars (), which is the case with previous versions of PHP, but will nowA e_strict error is issued. It is strongly recommended that you do not use Eregi (), which has been removed in the latest version. Trait,callable,insteadof keywords are retained. New features:   Additional support traits. Add short array syntax, such as a=[1,2,3,4], or a = [' One ' => 1, ' two ' => 2, ' three ' => 3, ' four ' => 4];. New support for member access parsing of functions returning arrays, such as foo () [0]. The closure now supports $this. Now, regardless of whether or not you set the Shortopentag php.ini option, add access to class members when instantiated, for example: (New Foo)->bar (). The class::{expr} () syntax is now supported. Add a binary direct amount, such as: 0b001001101 to improve the warning of parsing error messages and incompatible parameters. The session extension is now able to track file upload progress. A Web server built into the CLI schema for development. More resources migrated from 5.3 to 5.4   php5.5   changes:   has abandoned support for Windows XP and 2003. Building a Windows version of PHP requires Windows Vista or an updated system. Pack () and unpack () function changes remove PHP logo GUIDs new features:   add generators, including yield keyword new finally keyword foreach now supports list () empty () It is now supported to pass in an arbitrary expression, not just a variable. Non-variable array and string can also support subscript gets the class name through:: Class can get increased opcache extension

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.