@ 2016-01-23T03:52:40Z <?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::INACTIVE => 'Inactive',
self::SOLD => 'Sold',
];
/**
* Status constructor.
* @param $value
*/
public function __construct(int $value)
{
if (!in_array($value, array_keys($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;
}
}
$status = new Status(Status::SOLD);
var_dump(new Product(1, 'Chess board', $status));
echo "\n\n\n\n{$status}";
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 7.0.0 - 7.0.20 , 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.7 object(App\Product)#2 (3) {
["id":"App\Product":private]=>
int(1)
["name":"App\Product":private]=>
string(11) "Chess board"
["status":"App\Product":private]=>
object(App\Status)#1 (2) {
["value":"App\Status":private]=>
int(3)
["labels":"App\Status":private]=>
array(3) {
[1]=>
string(6) "Active"
[2]=>
string(8) "Inactive"
[3]=>
string(4) "Sold"
}
}
}
Sold Output for 5.5.24 - 5.5.35 , 5.6.8 - 5.6.28 Warning: Unsupported declare 'strict_types' in /in/LZSMX 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/LZSMX on line 59 and defined in /in/LZSMX on line 24
Process exited with code 255 . preferences:dark mode live preview
179.93 ms | 402 KiB | 229 Q