id; } } class Backpack extends BaseEntity{ private $model; private $vendor; private $price; private $categoryId; public function __construct($dataArray){ $this->id=$dataArray['id']; $this->model=$dataArray['model']; $this->vendor=$dataArray['vendor']; $this->price=$dataArray['price']; $this->categoryId=$dataArray['categoryId']; } public function getAsArray(){ return ['id'=>$this->id, 'model'=>$this->model, 'vendor'=>$this->vendor, 'price'=>$this->price, 'categoryId'=>$this->categoryId]; } public function displayData($categoryRepository){ $categoryData=$categoryRepository->findById($this->categoryId); echo "{$this->id}. {$this->vendor} {$this->model}. Ціна: {$this->price}, Категорія {$categoryData['name']}
"; } public function updateData($dataArray){ $this->model=$dataArray['model']; $this->vendor=$dataArray['vendor']; $this->price=$dataArray['price']; $this->categoryId=$dataArray['categoryId']; } } class Category extends BaseEntity{ private $name; public function __construct($dataArray){ $this->id=$dataArray['id']; $this->name=$dataArray['name']; } public function getAsArray(){ return ['id'=>$this->id, 'name'=>$this->name]; } public function displayData(){ echo "{$this->id}. {$this->name}
"; } public function updateData($dataArray){ $this->name=$dataArray['name']; } } abstract class BaseRepository{ protected $list; protected $lastid; public function __construct(){ $this->list=[]; $this->lastid=0; } public abstract function add($dataArray); public function findById($id){ for ($i=0;$ilist);$i++){ if($this->list[$i]->getId()==$id){ return $this->list[$i]->getAsArray(); } } } public function updateById($dataArray){ for ($i=0;$ilist);$i++){ if($this->list[$i]->getId()==$dataArray['id']){ $this->list[$i]->updateData($dataArray); break; } } } public function deleteById($id){ for ($i=0;$ilist);$i++){ if($this->list[$i]->getId()==$id){ array_splice($this->list,$i,1); break; } } } } class CategoryRepository extends BaseRepository{ public function add($dataArray){ $this->lastid++; $dataArray['id']=$this->lastid; $cat=new Category($dataArray); array_push($this->list,$cat); } public function displayAll(){ for ($i=0;$ilist);$i++){ $this->list[$i]->displayData(); } } } class BackpackRepository extends BaseRepository{ public function add($dataArray){ $this->lastid++; $dataArray['id']=$this->lastid; $bp=new Backpack($dataArray); array_push($this->list,$bp); } public function displayAll($categoryRepository){ for ($i=0;$ilist);$i++){ $this->list[$i]->displayData($categoryRepository); } } } $repo1=new CategoryRepository(); $repo1->add(['name'=>"Міські рюкзаки"]); $repo1->add(['name'=>"Похідні рюкзаки"]); $repo2=new BackpackRepository(); $repo2->add([ 'model'=>'Bodo', 'vendor'=>'Fjord Nansen', 'price'=>4000, 'categoryId'=>1]); $repo2->add([ 'model'=>'Osprey', 'vendor'=>'Flare', 'price'=>4500, 'categoryId'=>2]); $repo2->displayAll($repo1); $repo2->updateById(['id'=>1, 'model'=>'Osprey', 'vendor'=>'Flare', 'price'=>4500, 'categoryId'=>2]); $repo2->displayAll($repo1); $repo2->deleteById(1); $repo2->displayAll($repo1); ?>