1*04fd306cSNickeau<?php 2*04fd306cSNickeau/** 3*04fd306cSNickeau * 4*04fd306cSNickeau * @category Xamin 5*04fd306cSNickeau * @package Handlebars 6*04fd306cSNickeau * @author fzerorubigd <fzerorubigd@gmail.com> 7*04fd306cSNickeau * @author Behrooz Shabani <everplays@gmail.com> 8*04fd306cSNickeau * @copyright 2012 (c) ParsPooyesh Co 9*04fd306cSNickeau * @copyright 2013 (c) Behrooz Shabani 10*04fd306cSNickeau * @copyright 2014 (c) Mardix 11*04fd306cSNickeau * @license MIT 12*04fd306cSNickeau * @link http://voodoophp.org/docs/handlebars 13*04fd306cSNickeau */ 14*04fd306cSNickeau 15*04fd306cSNickeaunamespace Handlebars; 16*04fd306cSNickeau 17*04fd306cSNickeauclass Autoloader 18*04fd306cSNickeau{ 19*04fd306cSNickeau 20*04fd306cSNickeau private $_baseDir; 21*04fd306cSNickeau 22*04fd306cSNickeau /** 23*04fd306cSNickeau * Autoloader constructor. 24*04fd306cSNickeau * 25*04fd306cSNickeau * @param string $baseDir Handlebars library base directory default is 26*04fd306cSNickeau * __DIR__.'/..' 27*04fd306cSNickeau */ 28*04fd306cSNickeau protected function __construct($baseDir = null) 29*04fd306cSNickeau { 30*04fd306cSNickeau if ($baseDir === null) { 31*04fd306cSNickeau $this->_baseDir = realpath(__DIR__ . '/..'); 32*04fd306cSNickeau } else { 33*04fd306cSNickeau $this->_baseDir = rtrim($baseDir, '/'); 34*04fd306cSNickeau } 35*04fd306cSNickeau } 36*04fd306cSNickeau 37*04fd306cSNickeau /** 38*04fd306cSNickeau * Register a new instance as an SPL autoloader. 39*04fd306cSNickeau * 40*04fd306cSNickeau * @param string $baseDir Handlebars library base directory, default is 41*04fd306cSNickeau * __DIR__.'/..' 42*04fd306cSNickeau * 43*04fd306cSNickeau * @return \Handlebars\Autoloader Registered Autoloader instance 44*04fd306cSNickeau */ 45*04fd306cSNickeau public static function register($baseDir = null) 46*04fd306cSNickeau { 47*04fd306cSNickeau $loader = new self($baseDir); 48*04fd306cSNickeau spl_autoload_register(array($loader, 'autoload')); 49*04fd306cSNickeau 50*04fd306cSNickeau return $loader; 51*04fd306cSNickeau } 52*04fd306cSNickeau 53*04fd306cSNickeau /** 54*04fd306cSNickeau * Autoload Handlebars classes. 55*04fd306cSNickeau * 56*04fd306cSNickeau * @param string $class class to load 57*04fd306cSNickeau * 58*04fd306cSNickeau * @return void 59*04fd306cSNickeau */ 60*04fd306cSNickeau public function autoload($class) 61*04fd306cSNickeau { 62*04fd306cSNickeau if ($class[0] === '\\') { 63*04fd306cSNickeau $class = substr($class, 1); 64*04fd306cSNickeau } 65*04fd306cSNickeau 66*04fd306cSNickeau if (strpos($class, 'Handlebars') !== 0) { 67*04fd306cSNickeau return; 68*04fd306cSNickeau } 69*04fd306cSNickeau 70*04fd306cSNickeau $file = sprintf('%s/%s.php', $this->_baseDir, str_replace('\\', '/', $class)); 71*04fd306cSNickeau 72*04fd306cSNickeau if (is_file($file)) { 73*04fd306cSNickeau include $file; 74*04fd306cSNickeau } 75*04fd306cSNickeau } 76*04fd306cSNickeau 77*04fd306cSNickeau} 78