А зачем эти сложности? Тебе хочется пользоваться объектами, так в чем проблема не использовать для этого массивы, чтоб потом не думать, как эти массивы переводить в объекты. И молиться, что ты не упустил какое-то там свойство, которое тебе выстрелит неизвестно когда.
<?php
class Project {
public int $id;
public string $name;
public function __construct(int $id, string $name) {
$this->id = $id;
$this->name = $name;
}
}
class ProjectWithLogo extends Project {
public string $logo;
public function __construct(Project $project, string $logo) {
$this->id = $project->id;
$this->name = $project->name;
$this->logo = $logo;
}
}
function mapperProject(Project $project): ProjectWithLogo {
return new ProjectWithLogo($project, "logo-path");
}
var_dump(mapperProject(new Project(123, "Pet Project")));