Add a Mustache Autoloader implementation.
This commit is contained in:
@@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Mustache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mustache class autoloader.
|
||||||
|
*/
|
||||||
|
class Autoloader {
|
||||||
|
|
||||||
|
private $baseDir;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Autoloader constructor.
|
||||||
|
*
|
||||||
|
* @param string $baseDir Mustache library base directory (default: __DIR__.'/..')
|
||||||
|
*/
|
||||||
|
public function __construct($baseDir = null) {
|
||||||
|
$this->baseDir = rtrim($baseDir, '/') ?: __DIR__.'/..';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a new instance as an SPL autoloader.
|
||||||
|
*
|
||||||
|
* @param string $baseDir Mustache library base directory (default: __DIR__.'/..')
|
||||||
|
*
|
||||||
|
* @return \Mustache\Autoloader Registered Autoloader instance
|
||||||
|
*/
|
||||||
|
static public function register($baseDir = null) {
|
||||||
|
$loader = new self($baseDir);
|
||||||
|
spl_autoload_register(array($loader, 'autoload'));
|
||||||
|
|
||||||
|
return $loader;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Autoload Mustache classes.
|
||||||
|
*
|
||||||
|
* @param string $class
|
||||||
|
*/
|
||||||
|
public function autoload($class) {
|
||||||
|
if ($class[0] === '\\') {
|
||||||
|
$class = substr($class, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strpos($class, 'Mustache') !== 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = sprintf('%s/%s.php', $this->baseDir, str_replace('\\', '/', $class));
|
||||||
|
if (is_file($file)) {
|
||||||
|
require $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Mustache\Test;
|
||||||
|
|
||||||
|
use Mustache\Autoloader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group unit
|
||||||
|
*/
|
||||||
|
class AutoloaderTest extends \PHPUnit_Framework_TestCase {
|
||||||
|
public function testRegister() {
|
||||||
|
$loader = Autoloader::register();
|
||||||
|
$this->assertTrue(spl_autoload_unregister(array($loader, 'autoload')));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testAutoloader() {
|
||||||
|
$loader = new Autoloader(__DIR__.'/../../fixtures/autoloader');
|
||||||
|
|
||||||
|
$this->assertNull($loader->autoload('NonMustacheClass'));
|
||||||
|
$this->assertFalse(class_exists('NonMustacheClass'));
|
||||||
|
|
||||||
|
$loader->autoload('Mustache\Foo');
|
||||||
|
$this->assertTrue(class_exists('Mustache\Foo'));
|
||||||
|
|
||||||
|
$loader->autoload('\Mustache\Bar');
|
||||||
|
$this->assertTrue(class_exists('Mustache\Bar'));
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-12
@@ -1,16 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
require __DIR__.'/../src/Mustache/Buffer.php';
|
require __DIR__.'/../src/Mustache/Autoloader.php';
|
||||||
require __DIR__.'/../src/Mustache/Compiler.php';
|
\Mustache\Autoloader::register();
|
||||||
require __DIR__.'/../src/Mustache/Context.php';
|
|
||||||
require __DIR__.'/../src/Mustache/Loader.php';
|
|
||||||
require __DIR__.'/../src/Mustache/Loader/MutableLoader.php';
|
|
||||||
require __DIR__.'/../src/Mustache/Loader/ArrayLoader.php';
|
|
||||||
require __DIR__.'/../src/Mustache/Loader/FilesystemLoader.php';
|
|
||||||
require __DIR__.'/../src/Mustache/Loader/StringLoader.php';
|
|
||||||
require __DIR__.'/../src/Mustache/Mustache.php';
|
|
||||||
require __DIR__.'/../src/Mustache/Parser.php';
|
|
||||||
require __DIR__.'/../src/Mustache/Template.php';
|
|
||||||
require __DIR__.'/../src/Mustache/Tokenizer.php';
|
|
||||||
|
|
||||||
require __DIR__.'/lib/yaml/lib/sfYamlParser.php';
|
require __DIR__.'/lib/yaml/lib/sfYamlParser.php';
|
||||||
|
|||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Mustache;
|
||||||
|
|
||||||
|
class Bar {
|
||||||
|
// nada
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Mustache;
|
||||||
|
|
||||||
|
class Foo {
|
||||||
|
// nada
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class NonMustacheClass {
|
||||||
|
// noop
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user