PHP7を搭載したUbuntu 16.04サーバーでlaravel 5.4を実行しています。cviebrock/eloquent-sluggableパッケージをインストールしようとすると、いくつかのエラーがスローされます。 pish@let:/home/sherk/ftp/www$ sudo composer require cviebrock/eloquent-sluggable Do not run Composer as root/super user! See https://getcomposer.org/root for details Using version ^4.2 for cviebrock/eloquent-sluggable ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. …
更新:PHP 7.4は、この質問で提起された主要な問題に対処する共分散と反変性をサポートするようになりました。 PHP 7で戻り値の型のヒントを使用する際に問題が発生しました。私の理解では、ヒント: selfとは、実装クラスがそれ自体を返すことを意図していることを意味します。したがって: self、インターフェイスでそれを示すために使用しましたが、実際にインターフェイスを実装しようとすると、互換性エラーが発生しました。 以下は、私が遭遇した問題の簡単なデモンストレーションです。 interface iFoo { public function bar (string $baz) : self; } class Foo implements iFoo { public function bar (string $baz) : self { echo $baz . PHP_EOL; return $this; } } (new Foo ()) -> bar ("Fred") -> bar ("Wilma") -> bar …
次のように、新しく導入されたプロパティタイプのヒントを利用するようにクラス定義を更新しました。 class Foo { private int $id; private ?string $val; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; } public function getId(): int { return $this->id; } public function getVal(): ?string { return $this->val; } public function getCreatedAt(): ?DateTimeInterface { return $this->createdAt; } public …