<?php interface Vehicle { public function setSpeedLimit(Float $limit) : Car; public function setManufacturer(String $manufacturer) : MethodOfTransport; } interface NonVehicle { public function addSaddle() : Bicycle; public function setManufacturer(String $manufacturer) : MethodOfTransport; } abstract class MethodOfTransport { public function setManufacturer(String $manufacturer) : MethodOfTransport { return $this; } } class Bicycle extends MethodOfTransport implements NonVehicle { public function addSaddle() : Bicycle { return $this; } } class Car extends MethodOfTransport implements Vehicle { public function setSpeedLimit(Float $limit) : Car { return $this; } } $b = (new Bicycle())->setManufacturer( 'Foo' )->addSaddle(); $c = (new Car())->setManufacturer( 'Bar' )->setSpeedLimit( 140 ); interface VehicleServiceInterface { public function create(MethodOfTransport $t) : Void; } class VehicleService implements VehicleServiceInterface { public function create(MethodOfTransport $t) : Void { if (!$t instanceof Vehicle) throw new Exception( 'Cannot create a Vehicle on a NonVehicle instance.' ); echo 'Created'; } } (new VehicleService())->create( $c ); // Works (new VehicleService())->create( $b ); // Throws Exception
You have javascript disabled. You will not be able to edit any code.
Value for `_results` contains invalid data `array`