offline version v3
Запись на курсы по HTML, CSS, JavaScript, PHP, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗ppOpClImgI 106 of 179 menu

Реализация класса Image

Очевидно, что класс Image - это тот же класс Tag, но с некоторыми дополнениями. Логично в этом случае не создавать этот класс с нуля, а унаследовать его от класса Tag:

<?php class Image extends Tag { } ?>

Как мы описали выше, класс Image отличается от класса Tag тем, что в Image по умолчанию задаются атрибуты src и alt.

Кроме того, обратите внимание на то, как мы вызываем конструкторы классов:

<?php $image = new Tag('img'); $image = new Image(); ?>

Как вы видите, класс Tag ожидает первым параметром имя тега, а класс Image вызывается без параметра - имя тега в данном случае нет необходимости задавать, так как наш класс всегда делает один и тот же тег img.

Для того, чтобы реализовать такое поведение, класс Image должен переопределить конструктор родителя:

<?php class Image extends Tag { public function __construct() { // Вызовем конструктор родителя, передав имя тега: parent::__construct('img'); } } ?>

Давайте в этом же конструкторе зададим атрибуты src и alt:

<?php class Image extends Tag { public function __construct() { $this->setAttr('src', ''); // установим атрибут src $this->setAttr('alt', ''); // установим атрибут alt parent::__construct('img'); // вызовем конструктор родителя } } ?>

Установку атрибутов можно упростить и выполнить в виде цепочки:

<?php class Image extends Tag { public function __construct() { $this->setAttr('src', '')->setAttr('alt', ''); parent::__construct('img'); } } ?>

При использовании нашего класса в дальнейшем мы можем затереть эти атрибуты с помощью setAttr на свое значение, а можем не затереть - тогда они так и останутся со значением '', смотрите пример:

<?php // Затрем src, но не alt: echo (new Image())->setAttr('src', 'img.png')->open(); // <img src="img.png" alt=""> ?>

Самостоятельно напишите реализацию описанного класса Image.

Используя созданный вами класс выведите на экран какую-нибудь картинку.

Установите созданной вами картинке атрибут width в значение 300, а атрибут height - в значение 200.