Проблемы с interface

подскажите пожалуйста в чем у меня проблема?

Если писать код на c#, то все нормально работает:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{
    public interface IMessages
    {
        void send(string message);
    }
    
    public class Messages : IMessages
    {
        public void send(string message)
        {
            Console.Write(message);
        }
    }
    
    public class Controller
    {
        public IMessages messages;
        
        public Controller()
        {
            messages = new Messages();
        }
    }
    
    public class Test
    {
        static void Main(string[] args)
        {
            Controller controller = new Controller();
            controller.messages.send("test");
        }
    }
}

Но вот на php такое не получается:

<?php

interface IMessages
{
    function send($message);
}

class Messages extends IMessages
{
    public function send($message)
    {
        echo $message;
    }
}

class Controller
{
    public IMessages $messages;

    public function __construct()
    {
        $messages = new Messages;
    }
}

$controller = new Controller();
$controller->$messages->send('test');

?>

Ошибка:

Fatal error: Class Messages cannot extend from interface IMessages in ./Playground/file0.php on line 14

Что у меня не так? И в чем может быть проблема(почему на c# работает, а на php нет)?


Ответы (1 шт):

Автор решения: Json

Ну так ответ же в ошибке: класс не может быть расширен с интерфейса. Используйте implements class Messages implements IMessages для реализации интерфейсов. И тут $controller->$messages->send('test') скорей всего тоже будет ошибка undefined property $messages

→ Ссылка