Cách dùng rất đơn giản,trong thư mục classes của application tạo file Auto.php rồi paste đoạn code này vào:
<?php
class Auto {
public static $ext;
 public static function register($ext1)
 {
  static::$ext = $ext1; 
  spl_autoload_register('Auto::load', true, true);
 }
 public static function load($class)
 {
  // deal with funny is_callable('static::classname') side-effect
  if (strpos($class, 'static::') === 0)
   {
     // is called from within the class, so it's already loaded
    return true;
   }
   $loaded = false;
   $class = ltrim($class, '\\');
   $path = static::$ext.static::class_to_path($class);
    if (file_exists($path))
     {
      include $path;
      $loaded = true;
     }
     return $loaded;
 }
  protected static function class_to_path($class, $psr = false)
  {
    $file  = '';
  if ($last_ns_pos = strripos($class, '\\'))
   {
    $namespace = substr($class, 0, $last_ns_pos);
    $class = substr($class, $last_ns_pos + 1);
    $file = str_replace('\\',DIRECTORY_SEPARATOR, $namespace).DIRECTORY_SEPARATOR;
   }
       $file .= str_replace('_', DIRECTORY_SEPARATOR, $class).'.php';
  if ( ! $psr)
  {
   $file = strtolower($file);
  }
    return $file;
  }
}
?>
Trước khi bạn muốn load 1 class bạn chỉ cần thêm vào :
Auto::register('ten_folder_chua_thu_vien_do');
Ví dụ:
Bạn muốn sủ dụng thư viện Zend2.1,down thư mục Zend bỏ vào trong folder vendor trong application.Trong Controller trước khi bạn muốn dùng 1 class nào của Zend ,bạn chỉ cần viết:
Auto::register(APPPATH.'vendor/');
$content = array(
'author' => 'Steve',
'categories' => array(
'PHP', 'Zend', 'JavaScript'
)
);
$json = \Zend\Json\Json::encode($content);
var_dump($json);
Nếu bạn thấy mảng trong $content biến thành chuỗi json là bạn đã thành công rồi đó
Các bạn góp ý nhe.
 
Hay nhỉ,chắc có thể autoload mọi thư viện có namespâce luôn bạn nhỉ
Trả lờiXóa