<?php
interface PaymentGatewayInterface {
public function pay(array $bill);
public function processNotification($notification);
}
class Payment {
protected $gateway;
public function __construct(PaymentGatewayInteface $gateway)
{
$this->gateway = $gateway;
}
public function pay(array $bill)
{
return $this->gateway->pay($bill);
}
public function processNotification($notification)
{
return $this->gateway->processNotification($notification);
}
}
class Paypal implements PaymentGatewayInterface {
public function pay(array $bill)
{
}
public function processNotification($notification)
{
}
}
$a = new Payment(new Paypal);
Fatal error: Uncaught TypeError: Payment::__construct(): Argument #1 ($gateway) must be of type PaymentGatewayInteface, Paypal given, called in /in/UC65P on line 43 and defined in /in/UC65P:14
Stack trace:
#0 /in/UC65P(43): Payment->__construct(Object(Paypal))
#1 {main}
thrown in /in/UC65P on line 14
Process exited with code 255.
Fatal error: Uncaught TypeError: Argument 1 passed to Payment::__construct() must be an instance of PaymentGatewayInteface, instance of Paypal given, called in /in/UC65P on line 43 and defined in /in/UC65P:14
Stack trace:
#0 /in/UC65P(43): Payment->__construct(Object(Paypal))
#1 {main}
thrown in /in/UC65P on line 14
Process exited with code 255.
Catchable fatal error: Argument 1 passed to Payment::__construct() must be an instance of PaymentGatewayInteface, instance of Paypal given, called in /in/UC65P on line 43 and defined in /in/UC65P on line 14
Process exited with code 255.
Output for 5.1.0 - 5.1.6
Fatal error: Class 'PaymentGatewayInteface' not found in /in/UC65P on line 14
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_ARRAY, expecting '&' or T_VARIABLE in /in/UC65P on line 5
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING in /in/UC65P on line 3
Process exited with code 255.