bookshelf = $bookshelf; $this->book = $book; $this->chapter = $chapter; $this->page = $page; $this->pageRevision = $pageRevision; } /** * Fetch all core entity types as an associated array * with their basic names as the keys. * @return Entity[] */ public function all() { return [ 'bookshelf' => $this->bookshelf, 'book' => $this->book, 'chapter' => $this->chapter, 'page' => $this->page, ]; } /** * Get an entity instance by it's basic name. * @param string $type * @return Entity */ public function get(string $type) { $type = strtolower($type); return $this->all()[$type]; } /** * Get the morph classes, as an array, for a single or multiple types. * @param string|array $types * @return array */ public function getMorphClasses($types) { if (is_string($types)) { $types = [$types]; } $morphClasses = []; foreach ($types as $type) { $model = $this->get($type); $morphClasses[] = $model->getMorphClass(); } return $morphClasses; } }