2017-02-17 5 views
1

У меня есть два интерфейса с одинаковыми именами методов. Но оба метода имеют разные подписи. Согласно моей информации, два интерфейса с одинаковыми именами методов и одна и та же подпись не будут работать. Но в этом случае подпись (то есть число аргументов) различна. Тогда почему программа не работает?Реализация двух интерфейсов с одинаковыми именами методов, но с разными сигнатурами

<?php 

interface Car { 
    public function setModel($name); 
} 

interface Vehicle { 
    public function setModel(); 
} 

class miniCar implements Car, Vehicle { 
    private $model; 

    public function setModel($name) 
    { 
    $this -> model = $name; 
    } 

    public function setModel() 
    { 
    echo 'do nothing'; 
    } 

} 


$obj = new miniCar(); 

?> 
+0

Вся цель интерфейса, чтобы заставить классы, которые реализуют его, чтобы иметь определенную подпись, так что наличие двух интерфейсов с разными сигнатурами для того же метода не имеет никакого смысла, так как нет перегрузки методов в PHP. –

ответ

2

Функции PHP не могут быть перегружены. У них должны быть разные имена.

PHP function overloading

+0

E Rullmann, я не знал об этом факте. Спасибо, что увеличили мои знания. – WeAreRight