Вернуть self для возвращаемого типа функции внутри трейта PHP - PullRequest
0 голосов
/ 03 августа 2020

В типаже php можно использовать «self» или «object» в качестве типа возвращаемого значения такого метода, как метод setUpdatedAt (), и ссылка на класс, который использует черту или нет?

Мой вопрос действителен только в контексте «признака».

declare(strict_types=1);

trait Timestampable
{
    /**
     * @var \DateTimeInterface
     * @ORM\Column(type="datetime")
     */
    private \DateTimeInterface $createdAt;

    /**
     * @var \DateTimeInterface
     * @ORM\Column(type="datetime", nullable=true)
     */
    private ?\DateTimeInterface $updatedAt;

    /**
     * @return \DateTimeInterface
     */
    public function getCreatedAt(): \DateTimeInterface
    {
        return $this->createdAt;
    }

    public function getUpdatedAt(): ?\DateTimeInterface
    {
        return $this->updatedAt;
    }

    public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
    {
        $this->updatedAt = $updatedAt;
        return $this;
    }

1 Ответ

1 голос
/ 03 августа 2020

Фактически, это ЕДИНСТВЕННАЯ вещь, которую вы можете сделать (в отношении экземпляра или класса).

class TestClass {
    use TestTrait;
}

trait TestTrait {
    public function getSelf(): self {
        echo __CLASS__ . PHP_EOL;
        echo static::class . PHP_EOL;
        echo self::class . PHP_EOL;

        return $this;
    }
}

$test = new TestClass;
var_dump($test->getSelf());

Вывод

TestClass
TestClass
TestClass
object(TestClass)#1 (0) {
}

Рабочий пример .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...