- Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- object(A)#3 (0) { } object(A)#5 (0) { }
<?php
declare(strict_types=1);
interface Factory
{
public function build(): Product;
}
interface Product
{
}
class A implements Product
{
}
class B implements Product
{
}
class FA implements Factory
{
public function build(): Product
{
return new A;
}
}
class FB implements Factory
{
public function build(): Product
{
return new A;
}
}
class Client
{
private $f;
public function __construct(Factory $f)
{
$this->f = $f;
}
public function payload()
{
var_dump($this->f->build());
}
}
$fa = new FA;
$clientA = new Client($fa);
$clientA->payload();
$fb = new FB;
$clientB = new Client($fb);
$clientB->payload();