@ 2016-01-23T03:46:28Z <?php
declare(strict_types = 1);
namespace App
{
class Status
{
const ACTIVE = 1;
const INACTIVE = 2;
const SOLD = 3;
private $value;
private $labels = [
self::ACTIVE => 'Active',
self::ACTIVE => 'Inactive',
self::ACTIVE => 'Sold',
];
/**
* Status constructor.
* @param $value
*/
public function __construct(int $value)
{
if (in_array($value, $this->labels)) {
throw new \InvalidArgumentException('Invalid status');
}
$this->value = $value;
}
public function __toString()
{
return $this->labels[$this->value];
}
}
class Product
{
private $id;
private $name;
private $status;
/**
* Product constructor.
* @param $id
* @param $name
* @param $status
*/
public function __construct(int $id, string $name, Status $status)
{
$this->id = $id;
$this->name = $name;
$this->status = $status;
}
}
var_dump(new Product(1, 'Chess board', new Status(Status::SOLD)));
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 7.0.0 - 7.0.33 , 7.1.0 - 7.1.33 , 7.2.0 - 7.2.33 , 7.3.0 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.28 , 8.2.0 - 8.2.18 , 8.3.0 - 8.3.6 object(App\Product)#1 (3) {
["id":"App\Product":private]=>
int(1)
["name":"App\Product":private]=>
string(11) "Chess board"
["status":"App\Product":private]=>
object(App\Status)#2 (2) {
["value":"App\Status":private]=>
int(3)
["labels":"App\Status":private]=>
array(1) {
[1]=>
string(4) "Sold"
}
}
}
Output for 5.5.0 - 5.5.38 , 5.6.0 - 5.6.40 Warning: Unsupported declare 'strict_types' in /in/3rIZV on line 2
Catchable fatal error: Argument 1 passed to App\Status::__construct() must be an instance of App\int, integer given, called in /in/3rIZV on line 59 and defined in /in/3rIZV on line 24
Process exited with code 255 . preferences:dark mode live preview
239.56 ms | 402 KiB | 327 Q