有关自动加载的问题

浏览:506 发布日期:2014/03/27 分类:求助交流 关键字: spl_autoload_register
有两个类:test.class.php,mydb.class.php
test.class.php中代码:<?php
try {
         $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', '',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8';"));            
    } catch (PDOException $e) {
                print "Error!: " . $e->getMessage() . "<br/>";
                die();
    }
    
class Test{
  public $mytest='heh';
  public function mypb(){
    echo 'this is a public function!';
  } 
}
?>
mydb.class.php中代码<?php
try {
         $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', '',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8';"));            
    } catch (PDOException $e) {
                print "Error!: " . $e->getMessage() . "<br/>";
                die();
    }
class MyDB{
  public function test(){
    echo 'this is a db test class , thank';
  }
}
?>
当用以下方法调用时:
function myload($class_name) {
//require_once $class_name . '.class.php';
include $class_name . '.class.php';
}
$spltest=spl_autoload_register('myload');
$mtest=new Test();
var_dump($spltest);
报错: unexpected '$dbh',说明$dbh没有定义。
当使用:
spl_autoload_extensions(".class.php"); // comma-separated list
spl_autoload_register();
$mtest->mypb();
调用时,var_dump($dbh);输出:object(PDO)[3],说明已经定义。
为什这两种方法调用一个可以使用$dbh,一个不能
最佳答案
评论( 相关
后面还有条评论,点击查看>>