<?php
class Dog {
function say () { echo "Гав"; }
}
class Cat {
function say () { echo "Мяу"; }
}
// А теперь введем аспект, "усиливающий" say()
trait Strong {
function say () { parent::say(); echo "!"; }
}
class StrongDog extends Dog { use Strong; }
class StrongCat extends Cat { use Strong; }
$animals = [new Dog(), new Cat(), new StrongDog(), new StrongCat()];
foreach ($animals as $a) {
$a->say(); echo "\n";
}
PD9waHAKCmNsYXNzIERvZyB7CiAgZnVuY3Rpb24gc2F5ICgpIHsgZWNobyAi0JPQsNCyIjsgfSAKfQpjbGFzcyBDYXQgewogIGZ1bmN0aW9uIHNheSAoKSB7IGVjaG8gItCc0Y/RgyI7IH0gCn0KCi8vINCQINGC0LXQv9C10YDRjCDQstCy0LXQtNC10Lwg0LDRgdC/0LXQutGCLCAi0YPRgdC40LvQuNCy0LDRjtGJ0LjQuSIgc2F5KCkKdHJhaXQgU3Ryb25nIHsKICBmdW5jdGlvbiBzYXkgKCkgeyBwYXJlbnQ6OnNheSgpOyBlY2hvICIhIjsgfQp9CgpjbGFzcyBTdHJvbmdEb2cgZXh0ZW5kcyBEb2cgeyB1c2UgU3Ryb25nOyB9CmNsYXNzIFN0cm9uZ0NhdCBleHRlbmRzIENhdCB7IHVzZSBTdHJvbmc7IH0KCiRhbmltYWxzID0gW25ldyBEb2coKSwgbmV3IENhdCgpLCBuZXcgU3Ryb25nRG9nKCksIG5ldyBTdHJvbmdDYXQoKV07CmZvcmVhY2ggKCRhbmltYWxzIGFzICRhKSB7CiAgJGEtPnNheSgpOyBlY2hvICJcbiI7Cn0=