<?php
class App{
protected $data = [ ] ;
public function __construct( )
{
echo 'running App->__construct()' . PHP_EOL;
//какие то действия базового класса
}
//сюда пробрасываем все нужные переменные для наследников
public function setData
( array $data ) {
echo 'running setData' . PHP_EOL;
$this -> data = $data ;
}
}
class ModulOne extends App
{
public $id ;
public function __construct( )
{
echo 'running ModuleOne->__construct()' . PHP_EOL;
if ( ! empty ( $this -> data [ 'id' ] ) ) { $this -> id = $this -> data [ 'id' ] ;
} else {
echo '$this->data is empty, so id not set' . PHP_EOL;
}
}
}
$a = new ModulOne( ) ;
$a -> setData ( [ 'id' => 1 ] ) ;
PD9waHAKCmNsYXNzIEFwcHsKCiAgcHJvdGVjdGVkICRkYXRhID0gW107CgogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgewogIAllY2hvICdydW5uaW5nIEFwcC0+X19jb25zdHJ1Y3QoKScgLiBQSFBfRU9MOwogICAgLy/QutCw0LrQuNC1INGC0L4g0LTQtdC50YHRgtCy0LjRjyDQsdCw0LfQvtCy0L7Qs9C+INC60LvQsNGB0YHQsAogIH0KCiAgLy/RgdGO0LTQsCDQv9GA0L7QsdGA0LDRgdGL0LLQsNC10Lwg0LLRgdC1INC90YPQttC90YvQtSDQv9C10YDQtdC80LXQvdC90YvQtSDQtNC70Y8g0L3QsNGB0LvQtdC00L3QuNC60L7QsgogIHB1YmxpYyBmdW5jdGlvbiBzZXREYXRhKGFycmF5ICRkYXRhKQogIHsKICAJZWNobyAncnVubmluZyBzZXREYXRhJyAuIFBIUF9FT0w7CiAgICAkdGhpcy0+ZGF0YSA9ICRkYXRhOwogIH0KCn0KCgpjbGFzcyBNb2R1bE9uZSBleHRlbmRzIEFwcAp7CiAgcHVibGljICRpZDsKCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICB7CiAgCWVjaG8gJ3J1bm5pbmcgTW9kdWxlT25lLT5fX2NvbnN0cnVjdCgpJyAuIFBIUF9FT0w7CiAgICBpZighZW1wdHkoJHRoaXMtPmRhdGFbJ2lkJ10pKXsKICAgICAgJHRoaXMtPmlkID0gJHRoaXMtPmRhdGFbJ2lkJ107CiAgICB9IGVsc2UgewogICAgICBlY2hvICckdGhpcy0+ZGF0YSBpcyBlbXB0eSwgc28gaWQgbm90IHNldCcgLiBQSFBfRU9MOwogICAgfQogIH0KCn0KCgokYSA9IG5ldyBNb2R1bE9uZSgpOwokYS0+c2V0RGF0YShbJ2lkJyA9PiAxXSk7Cgp2YXJfZHVtcCgkYSk7