oop — Это нарушение LSP (php)?

class Message {

protected $body;

public function setBody($body)
{
$this->body = $body;
}

public function getBody()
{
return $this->body;
}
}

class ExtendedMessage extends Message {

private $some;

public function __construct($somedata)
{
$this->some = $somedata;
}

public function getBody()
{
return $this->some;
}
}

$a = new Message;

$b = new ExtendedMessage('text');

$a->getBody(); // NULL`

$b->getBody(); // text`

-2

Решение

если $ a создает класс сообщения, $ body имеет значение NULL, потому что для него ничего не установлено, и никакой __construct () не запускает (не существует) и устанавливает $ body в что-либо.

1 набор тела к чему-то иначе это всегда будет NULL

$a = new Message;
$a->setBody("my text here");
$a->getBody(); // returns "my text here"

2 добавить конструктор в класс сообщения

class Message {

protected $body;

public function __construct($a="") {
$this->body = $a;
}

// ur code as shown
}

чем бежать

$a = new Message("my text");
$a->getBody(); // returns "my text"
$b = new Message;
$b->getBody(); // returns "" - emtpy string

3 установить тело в классе сообщения на пустую строку в классе def

protected $body = ""; // or whatever u want

и он вернет val после построения класса с getBody ()

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector