|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #65162 Add Generics support
Submitted: 2013-06-28 18:17 UTC Modified: 2021-07-02 19:00 UTC
Avg. Score:4.6 ± 0.8
Reproduced:39 of 39 (100.0%)
Same Version:27 (69.2%)
Same OS:27 (69.2%)
From: matutetandil at gmail dot com Assigned:
Status: Suspended Package: Class/Object related
PHP Version: Irrelevant OS: Any
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
Block user comment
Status: Assign to:
Bug Type:
From: matutetandil at gmail dot com
New email:
PHP Version: OS:


 [2013-06-28 18:17 UTC] matutetandil at gmail dot com
Add generics support to PHP. So you can declare classes like this:

class MyGenericClass<T> {
   private $object;

   public function __construct() {
       $this->object = new T();


class MyGenericClass<T extends SuperTClass> {
   private $object;

   public function __construct() {
       $this->object = new T();

In the first case you can make a new (supposing that there is defined a B 
$a = new MyGenericClass<B>();

and in the second example you are forcing B to be a SuperTClass.

I hope you can implement this feature! Is great!!!

Expected result:
Generics included in a PHP relase.

Actual result:
No Generics support.


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2016-06-21 20:15 UTC]
FWIW, there is a respective RFC in draft status:
 [2016-09-07 18:32 UTC] php at mattjanssen dot com
There is a $1,000 bounty on this request: <>.
 [2021-07-02 08:39 UTC] fcolecumberri at hotmail dot com
smething like this??:


class MyClassA {}
class MyClassB {}
class MyClassC {}

class MyGenericClass {
   public $object;

   public function __construct($T) {
       $this->object = new $T();

$mgc_a = new MyGenericClass(MyClassA::class);
$mgc_b = new MyGenericClass(MyClassB::class);
$mgc_c = new MyGenericClass(MyClassC::class);

echo get_class($mgc_a->object)."\n";
echo get_class($mgc_b->object)."\n";
echo get_class($mgc_c->object)."\n";
 [2021-07-02 17:51 UTC]
-Status: Open +Status: Suspended
 [2021-07-02 19:00 UTC] matutetandil at gmail dot com
The implementation os Generics, is more than just creating a new class inside another class by passing the type by parameter.

The main idea behind this, is to allow the class to only receive parameters of certain type defined when the class is created. this way, you can have for instance an Generic Array, that only accepts Strings and another Generic Array that only allows integer values.

You can read more about this here:
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Jun 24 03:01:29 2024 UTC