Суть вопроса сугубо философская, наверное. Но я немного недопонимаю(
Раз в трэйтах можно использовать абстрактные методы, то зачем нужны интерфейсы, ведь можно описать соглашение для классов в трэйте? И наоборот зачем нужны абстрактные методы в трэйте, если вообще говоря - задача интерфейса описать методы, которые должен реализовывать класс...
interface ITestInterface
{
public function a();
public function b();
public function c();
}
trait TestTrait
{
abstract public function a();
abstract public function b();
abstract public function c();
}
class A implements ITestInterface
{
}
class B
{
use TestTrait;
}
в чем разница тут если их наследует класс C