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);
?>