/** * @param string $name * @return Package */ public function get($name) { if (!isset($this->cached[$name])) { $path = Utils::getClassPath($name); $fullClassName = Utils::getFullClassName($name); $package = new Package($name); $builder = new PackageBuilder(); $this->cached[$name] = $package; $builder->setup($package); if (!is_file($path) || !is_readable($path)) { throw new \Exception("Can't load file '{$path}'"); } /** @noinspection PhpIncludeInspection */ require_once $path; /** @noinspection PhpUndefinedMethodInspection */ $fullClassName::get($builder); } return $this->cached[$name]; }
public function test_getFullClassName_PackagePasses() { $this->assertEquals(Utils::COMPILED_CLASSES_NAMESPACE . '\\' . Utils::PACKAGE_CLASS_NAME_PREFIX . 'a_b', Utils::getFullClassName(new Package('a/b'))); }