filePath = $filePath; $this->course = $course; $this->session = $session; } /** * @throws \Exception * * @return mixed */ public static function create(string $packageType, string $filePath, Course $course, Session $session = null) { switch ($packageType) { case 'tincan': return new TinCanParser($filePath, $course, $session); case 'cmi5': return new Cmi5Parser($filePath, $course, $session); default: throw new \Exception('Invalid package.'); } } abstract public function parse(): \Chamilo\PluginBundle\Entity\XApi\ToolLaunch; }