Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP - History



PHP started out as a small open-source project that evolved gradually as more and more people found out how useful it was. Rasmus Lerdorf released the first version of PHP way back in 1994. At that time, PHP stood for Personal Home Page, as he used it to maintain his personal homepage.

Later on, he added database support and called it as "Personal Home Page/Forms Interpreter" or PHP/FI, which could be used to build simple, dynamic web applications.

  • PHP has gone through many versions since its first release in 1995. PHP 1.0 introduced in 8 June 1995, created by Rasmus Lerdorf. Mainly developed to track visits to his online resume. Then PHP 2.0 (1 November 1997) is the first version recognized as a standalone scripting language which included form handling, database support and built-in variables.

  • Zeev Suraski and Andi Gutmans rewrote the parser in 1997 and formed the base of PHP 3. The name of the language was also changed to the recursive acronym PHP: Hypertext Preprocessor. They are also the authors of Zend Engine, a compiler and runtime environment for the PHP. Zend Engine powered PHP 4 was released in May 2000.

  • PHP 5 was released in 2004, which included many new features such as OOP support, the PHP Data Objects (PDO), and numerous performance enhancements.

  • PHP 7, is a new major PHP version which was developed in 2015. It included new language features, most notable being, the introduction of return type declarations for functions which complement the existing parameter type declarations, and support for the scalar types (integer, float, string, and boolean) in parameter and return type declarations.

New Features in PHP 8

PHP 8 is the latest major version, released in November 2020. Some of the new features and notable changes include:

Just-in-time (JIT) Compilation

PHP 8's JIT compiler provides substantial performance improvements mathematical-type operations than for common web-development use cases. The JIT compiler provides the future potential to move some code from C to PHP.

Match Expressions

The newly introduced "match" expression is more compact than a switch statement. Because match is an expression, its result can be assigned to a variable or returned from a function. The example is as follows −

<?php
   $num = 2;
   echo match($num) {
      1 => "One",
      2 => "Two",
      3 => "Three",
      default => "Other",
   };
?>

Union types

A union type accepts values from multiple types rather than just one. Union types are also useful in a variety of circumstances because of PHP's dynamic type system. Union types are a collection of two or more types that can be used equally. Here is the example of union types −

   function printData(int|string $data) {
      echo $data;
  }

Named Arguments

Instead of passing values in order, you can use names. Here is the example fot named arguments −

   function greet($name, $age) {
      echo "Hello, $name. You are $age years old.";
  }
  
  greet(age: 25, name: "Alia");

Attributes (Annotations)

It is a new way to add metadata to code. It makes code cleaner than using comments. Below is th example −

   #[CustomAttribute]
   class MyClass { }

Static return type

Functions can only return static (non-changing) values. It helps with class inheritance. Static is a special class name that, along with self and parent, is now a valid return type in the new version.

WeakMap

WeakMaps are a new feature in PHP 8. It behaves similarly to a regular array or dictionary, but it does not keep objects in memory that are no longer needed. Here is the basic example for this feature −

   class FooBar {
      private WeakMap $cache;
      public function getSomethingWithCaching(object $obj) {
          return $this->cache[$obj] ??= $this->computeSomethingExpensive($obj);
      }
      // ...
  }

PHP 8 - Type Changes and Additions

PHP 8 introduced union types, a new static return type, and a new mixed type. PHP 8 also provided Attributes, (similar to "annotations" in other programming languages) that help in adding metadata to PHP classes.

In addition, there have been many changes and additions to the PHP standard library. PHP 8.2.9 is the latest stable version available.

Important milestones in PHP's release history are summarized in the following table −

Version Description

Version 1.0
(8 June 1995)

Officially called "Personal Home Page Tools (PHP Tools)". This is the first use of the name "PHP".

Version 2.0
(1 November 1997)

Officially called "PHP/FI 2.0". This is the first release that could actually be characterised as PHP, being a standalone language with many features that have endured to the present day.

Version 3.0
(6 June 1998)

Development moves from one person to multiple developers.

Zeev Suraski and Andi Gutmans rewritten the base for this version.

Version 4.0
(22 May 2000)

Added more advanced two-stage parse/execute tag-parsing system called the Zend engine.

Version 5.0
(13 July 2004)

Zend Engine II with a new object model.

Version 5.1
(24 November 2005)

Performance improvements with the introduction of compiler variables in re-engineered PHP Engine.

Added PHP Data Objects (PDO) as a consistent interface for accessing databases.

Version 6.x
Not released

Abandoned version of PHP that planned to include native Unicode support.

Version 7.0
(3 December 2015)

  • Zend Engine 3 ,

  • Uniform variable syntax,

  • Added Closure:call(),

  • ?? (null coalesce) operator,

  • Return type declarations,

  • Scalar type declarations,

  • <=> "spaceship" three-way comparison operator,

  • Anonymous classes

Version 7.3
(6 December 2018)

Flexible Heredoc and Nowdoc syntax

Version 8.0
(26 November 2020)

  • Just-In-Time (JIT) compilation,

  • Arrays starting with a negative index,

  • TypeError on invalid arithmetic/bitwise operators,

  • Variable syntax tweaks,

  • Attributes,

  • Named arguments,

  • Match expression,

  • Union types, Mixed type,

  • Static return type

Version 8.1
(25 November 2021)

  • Enumerations (Enums),

  • Readonly Properties,

  • New Functions: fsync, fdatasync, array_is_list,

  • Final class constantss,

  • Explicit octal numeral notation,

Version 8.2
(8 December 2022)

  • Standalone Types (null, false, true),

  • Disjunctive Normal Form (DNF) Types,

  • New Random Extension,

  • Deprecation of Dynamic Properties,

  • Performance Improvements,

Version 8.3
(23 November 2023)

  • Typed Class Constants,

  • json_validate() Function,

  • Deep Cloning of readonly Properties,

  • Dynamic Class Constant Fetch,

  • Randomizer Additions,

  • Override Attribute,

Version 8.4
(21 November 2024)

  • Property Hooks,

  • Asymmetric Visibility,

  • Chaining new expressions without parentheses,

  • New Array Functions like array_find(), array_find_key(), array_any(), array_all(),

Advertisements