Проблемы с 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