public function sum(): int { return 10 + "5e2"; } Typing error This is a num (int/float) because this is used in an arithmetic operation. It is incompatible with a string.
final class BookId { private $id; public function __construct(string $id) { $this->id = $id; } public function getValue(): string { return $this->id; } }
abstract class Identifier { public function __construct( protected T $id ) {} public function getValue(): T { return $this->id; } } final class BookId extends Identifier { } Generics
class Book { public function __construct( private BookId $id, private BookTitle $title, private Price $price ) {} public function getId(): BookId { return $this->id; } // লུ } ݎ੍͍ ݎ੍͍
class BookCollection { protected $books = []; public function __construct(array $books = []) { $this->books = $books; } public function toArray(): array { $books = []; foreach($this->books as $book) { $books[] = new Book( new BookId($book['id']), new BookTitle($book['title']), new Price($book['price']) ); } return $books; } } ϑΟʔϧυ੍ͳ͠