Пример #1
0
 /**
  * @param array $paths
  */
 private function setupAutoloader(array $paths = [])
 {
     require_once __DIR__ . '/src/ClassLoader/Psr4ClassLoader.php';
     $loader = new Psr4ClassLoader();
     foreach ($paths as $ns => $path) {
         foreach ($path as $k => $dir) {
             $loader->addPrefix($ns, implode(DIRECTORY_SEPARATOR, $dir));
         }
     }
     $loader->register();
 }
Пример #2
0
 /**
  * @param array $dirs [[prefix, path, <recursive>], ...]
  * @return Psr4ClassLoader
  */
 public function loadClass(array $dirs)
 {
     $loader = new Psr4ClassLoader();
     $root = realpath($this->root);
     $paths = [];
     foreach ($dirs as $d) {
         if (is_array($d) && count($d) > 1) {
             $prefix = $d[0];
             $path = $d[1];
             $r = false;
             if (count($d) > 2 && $d[2]) {
                 $r = true;
             }
             $p = $this->getClassPath($root, $prefix, $path, $r);
             $paths = array_merge($paths, $p);
         }
     }
     foreach ($paths as $p) {
         $loader->addPrefix($p['prefix'], $p['path']);
     }
     $loader->register();
     return $loader;
 }
<?php

require_once __DIR__ . '/vendor/symfony/class-loader/Psr4ClassLoader.php';
use MF\App;
use MF\Render\MessageRender;
use Symfony\Component\ClassLoader\Psr4ClassLoader;
$loader = new Psr4ClassLoader();
$loader->addPrefix('MF', __DIR__ . '/src');
$loader->register();
$app = new App(new MessageRender('Hello world by Psr4ClassLoader!'));
$app->renderResponse();
Пример #4
0
 /**
  * Adds concrete5's core autoloading prefixes
  *
  * * The following prefixes are registered:
  * <ul>
  * <li>`Concrete\StartingPointPackage` -> `concrete/config/install/packages`</li>
  * <li>`Concrete\Attribute` -> `concrete/attributes`</li>
  * <li>`Concrete\Authentication` -> `concrete/authentication`</li>
  * <li>`Concrete\Block` -> `concrete/blocks`</li>
  * <li>`Concrete\Theme` -> `concrete/themes`</li>
  * <li>`Concrete\Controller\PageType` -> `concrete/controllers/page_types`</li>
  * <li>`Concrete\Controller` -> `concrete/controllers`</li>
  * <li>`Concrete\Job` -> `concrete/jobs`</li>
  * <li>`Concrete\Core` -> `concrete/src`</li>
  * <li>`Application\StartingPointPackage` -> `application/config/install/packages`</li>
  * <li>`Application\Attribute` -> `application/attributes`</li>
  * <li>`Application\Authentication` -> `application/authentication`</li>
  * <li>`Application\Block` -> `application/blocks`</li>
  * <li>`Application\Theme` -> `application/themes`</li>
  * <li>`Application\Controller\PageType` -> `application/controllers/page_types`</li>
  * <li>`Application\Controller` -> `application/controllers`</li>
  * <li>`Application\Job` -> `application/jobs`</li>
  * <li>`Application\Core` -> `application/src`</li>
  * </ul>
  *
  * The application namespace can be customized by setting `namespace` in the application's `config/app.php`.
  */
 protected function setupFileAutoloader()
 {
     $symfonyLoader = new ModifiedPSR4ClassLoader();
     $symfonyLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\StartingPointPackage', DIR_BASE_CORE . '/config/install/' . DIRNAME_PACKAGES);
     $symfonyLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\Attribute', DIR_BASE_CORE . '/' . DIRNAME_ATTRIBUTES);
     $symfonyLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\MenuItem', DIR_BASE_CORE . '/' . DIRNAME_MENU_ITEMS);
     $symfonyLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\Authentication', DIR_BASE_CORE . '/' . DIRNAME_AUTHENTICATION);
     $symfonyLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\Block', DIR_BASE_CORE . '/' . DIRNAME_BLOCKS);
     $symfonyLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\Theme', DIR_BASE_CORE . '/' . DIRNAME_THEMES);
     $symfonyLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\Controller\\PageType', DIR_BASE_CORE . '/' . DIRNAME_CONTROLLERS . '/' . DIRNAME_PAGE_TYPES);
     $symfonyLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\Controller', DIR_BASE_CORE . '/' . DIRNAME_CONTROLLERS);
     $symfonyLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\Job', DIR_BASE_CORE . '/' . DIRNAME_JOBS);
     $namespace = 'Application';
     $app_config_path = DIR_APPLICATION . '/config/app.php';
     $provideCoreExtensionAutoloaderMapping = false;
     if (file_exists($app_config_path)) {
         $app_config = (require $app_config_path);
         if (isset($app_config['namespace'])) {
             $namespace = $app_config['namespace'];
         }
         if (isset($app_config['provide_core_extension_autoloader_mapping'])) {
             $provideCoreExtensionAutoloaderMapping = true;
         }
     }
     $symfonyLoader->addPrefix($namespace . '\\StartingPointPackage', DIR_APPLICATION . '/config/install/' . DIRNAME_PACKAGES);
     $symfonyLoader->addPrefix($namespace . '\\Attribute', DIR_APPLICATION . '/' . DIRNAME_ATTRIBUTES);
     $symfonyLoader->addPrefix($namespace . '\\MenuItem', DIR_APPLICATION . '/' . DIRNAME_MENU_ITEMS);
     $symfonyLoader->addPrefix($namespace . '\\Authentication', DIR_APPLICATION . '/' . DIRNAME_AUTHENTICATION);
     $symfonyLoader->addPrefix($namespace . '\\Block', DIR_APPLICATION . '/' . DIRNAME_BLOCKS);
     $symfonyLoader->addPrefix($namespace . '\\Theme', DIR_APPLICATION . '/' . DIRNAME_THEMES);
     $symfonyLoader->addPrefix($namespace . '\\Controller\\PageType', DIR_APPLICATION . '/' . DIRNAME_CONTROLLERS . '/' . DIRNAME_PAGE_TYPES);
     $symfonyLoader->addPrefix($namespace . '\\Controller', DIR_APPLICATION . '/' . DIRNAME_CONTROLLERS);
     $symfonyLoader->addPrefix($namespace . '\\Job', DIR_APPLICATION . '/' . DIRNAME_JOBS);
     $symfonyLoader->register();
     $strictLoader = new SymfonyClassLoader();
     $strictLoader->addPrefix(NAMESPACE_SEGMENT_VENDOR . '\\Core', DIR_BASE_CORE . '/' . DIRNAME_CLASSES);
     if ($provideCoreExtensionAutoloaderMapping) {
         $strictLoader->addPrefix($namespace, DIR_APPLICATION . '/' . DIRNAME_CLASSES . '/Concrete');
     } else {
         $strictLoader->addPrefix($namespace . '\\Src', DIR_APPLICATION . '/' . DIRNAME_CLASSES);
     }
     $strictLoader->register();
 }
Пример #5
0
 public function registerHelpers()
 {
     Core::bind('helper/blogify', 'Concrete\\Package\\Problog\\Controller\\Helpers\\Blogify');
     Core::bind('helper/blog_actions', 'Concrete\\Package\\Problog\\Controller\\Helpers\\BlogActions');
     $psr4_loader = new Psr4ClassLoader();
     $psr4_loader->addPrefix('\\Concrete\\Package\\Problog\\src', __DIR__ . '/src');
     $psr4_loader->register();
 }
namespace {
    require_once __DIR__ . '/vendor/autoload.php';
    use Dima\Legacy\TestClass as TestLoadedByMap;
    use Dima\Test as TestPsr0;
    use Symfony\Component\ClassLoader\ClassLoader;
    use Symfony\Component\ClassLoader\ClassMapGenerator;
    use Symfony\Component\ClassLoader\MapClassLoader;
    use Symfony\Component\ClassLoader\Psr4ClassLoader;
    use Symfony\Component\ClassLoader\XcacheClassLoader;
    use DG\SymfonyCert\Controller\HomeController;
    $psr0Loader = new ClassLoader();
    $psr0Loader->addPrefix('Dima', __DIR__ . '/srcPsr0');
    $cachedLoader = new XcacheClassLoader(sha1(__FILE__), $psr0Loader);
    $cachedLoader->register();
    $psr0Loader->unregister();
    $psr4Loader = new Psr4ClassLoader();
    $psr4Loader->addPrefix('DG\\SymfonyCert\\', __DIR__ . '/src');
    $psr4Loader->register();
    $mapLoader = new MapClassLoader(['Dima\\Legacy\\TestClass' => __DIR__ . '/srcPsr0/TestClass.php']);
    $mapLoader->register();
    ClassMapGenerator::dump(__DIR__ . '/srcThirdParty', __DIR__ . '/class_map.php');
    $classMap = (include __DIR__ . '/class_map.php');
    $mapLoader2 = new MapClassLoader($classMap);
    $mapLoader2->register();
    //Psr0 loader + XCache
    TestPsr0::output("Hello from Psr0 loaded class!");
    //Map loader
    TestLoadedByMap::test();
    $homeController = new HomeController();
    echo $homeController->indexAction()->getContent(), "\n";
}