自动加载类

在 PHP 5 中,不再需要这样了。可以定义一个 __autoload() 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。

Tip

spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载。因此,不再建议使用 __autoload() 函数,在以后的版本中它可能被弃用。

Note:

在 5.3.0 版之前,__autoload 函数抛出的异常不能被 catch 语句块捕获并会导致一个致命错误。从 5.3.0+ 之后,__autoload 函数抛出的异常可以被 catch 语句块捕获,但需要遵循一个条件。如果抛出的是一个自定义异常,那么必须存在相应的自定义异常类。__autoload 函数可以递归的自动加载自定义异常类。

Note:

自动加载不可用于 PHP 的 CLI 交互模式

Note:

如果类名比如被用于 call_user_func(),则它可能包含一些危险的字符,比如 ../。 建议您在这样的函数中不要使用用户的输入,起码需要在 __autoload() 时验证下输入。

<?php 
/* 
 * defined function responsible for loading class, 
 * replacing the old __ autoload. 
 * ROOT is constant of the path root of the system 
 */ 
spl_autoload_extensions('.class.php'); 
spl_autoload_register('loadClasses'); 
  function loadClasses($className) 
  {     
     if( file_exists(ROOT_DIR.DS.'controller/'.$className.'.class.php' ) ){ 
         set_include_path(ROOT_DIR.DS.'controller'.DS); 
         spl_autoload($className); 
     } 
     elseif( file_exists('model/'.$className.'.class.php' ) ){ 
         set_include_path(ROOT_DIR.DS.'model'.DS); 
         spl_autoload($className); 
     }elseif( file_exists('view/'.$className.'.class.php' ) ){ 
         set_include_path(ROOT_DIR.DS.'view'.DS); 
         spl_autoload($className    ); 
     }else 
     { 
         set_include_path(ROOT_DIR.DS.'lib'.DS); 
         spl_autoload($className    ); 
     } 
  } 
?> 

 

转载于:https://my.oschina.net/u/2672206/blog/676614

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值