// Как минимум потому, что имена не могут содержать
// ничего, кроме циферок и буковок и такое написать нельзя
function $this->foo()
{
// wtf?
}
class Project
{
public function __construct(
public readonly int $id,
public readonly string $name,
) {
}
}
class ProjectWithLogo extends Project
{
public function __construct(
Project $project,
public readonly string $logo,
) {
parent::__construct($project->id, $project->name);
}
}
function map_project(Project $project): ProjectWithLogo
{
return new ProjectWithLogo($project, 'logo-path');
}
class Some
{
public function __construct(
public \Closure $fun
) {
$this->fun = fn () => print 'property';
}
public function fun()
{
echo 'method';
}
}
// Метод
$some->fun();
// Поле
$fun = $some->fun;
$fun();
// Или
($some->fun)();