PHP VERSION: 8.2.18

type_hinting_return_type_subclass_inherited_ok.php

<?php
// return data type: inherited classes

class MyClass
{
    public static function 
make(): MyClass
    
{
        return new 
MyClass();
    }
}

class 
MyOtherClass extends MyClass
{
    public static function 
make(): MyOtherClass
    
{
        return new 
MyOtherClass();
    }
}

var_dump(MyClass::make());
var_dump(MyOtherClass::make());

Output


object(MyClass)#1 (0) {
}
object(MyOtherClass)#1 (0) {
}
SOURCE CODE