| 
<?php
 /**
 * Autoloader
 *
 * Licence:
 *
 * This file is part of Widgetfy.
 *
 * Widgetfy is free software: you can redistribute
 * it and/or modify it under the terms of the GNU
 * Lesser General Public License as published by the
 * Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * Widgetfy is distributed in the hope that it will
 * be useful, but WITHOUT ANY WARRANTY; without even
 * the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU Lesser
 * General Public Licensefor more details.
 *
 * You should have received a copy of the GNU Lesser
 * General Public License along with Widgetfy.  If
 * not, see <http://www.gnu.org/licenses/lgpl.html>.
 *
 * Description:
 *
 * This file is an implementation of PSR-4 loader
 * of this library. The code references the example
 * code provided by PHP-FIG.
 *
 * @package   Widgetify
 * @author    Koala Yeung <[email protected]>
 * @copyright 2014 Koala Yeung
 * @licence   http://www.gnu.org/licenses/lgpl.html
 * @link      http://github.com/Phata/Widgetify
 */
 
 spl_autoload_register(function ($class) {
 
 // project-specific namespace prefix
 $prefix = 'Phata\\Widgetfy';
 
 // shortcut to simlified interface
 if ($class == $prefix) {
 require __DIR__ . '/Widgetfy.php';
 return;
 }
 
 // base directory for the namespace prefix
 $base_dir = __DIR__ . '/src/';
 
 // does the class use the namespace prefix?
 $len = strlen($prefix);
 if (strncmp($prefix, $class, $len) !== 0) {
 // no, move to the next registered autoloader
 return;
 }
 
 // get the relative class name
 $relative_class = substr($class, $len);
 
 // separators with directory separators in the relative class name, append
 // with .php
 $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
 
 // if the file exists, require it
 if (file_exists($file)) {
 require $file;
 }
 
 });
 
 |