1.类设计最好一个类只有一个主要职责。
大家应该都知道__autoload()函数,如果定义了该函数,那么当在代码中使用了一个未定义的类的时候,该函数就会被调用,你可以在该函数中加载相应的类实现文件,如:
function__autoload($className){
require_once$className.“.class.php”;
}
但该函数已经不建议使用,原因是一个项目中仅能有一个这样的__autoload()函数,因为PHP不允许函数重名。但当你用到一些类库的时候,难免会出现多个autoload函数的需要,于是spl_autoload_register()取而代之:
functionautoloadModel($className){
$filename=“models/”.$className.“.php”;
if(file_exists($filename)&&is_readable($filename)){
require_once$filename;
}
}
functionautoloadController($className){
$filename=‘controllers/’.$className.‘.php’;
if(file_exists($filename)&&is_readable($filename)){
require_once$filename;
}
}
spl_autoload_register(‘autoloadModel’);
spl_autoload_register(‘autoloadController’);
spl_autoload_register()会将一个函数注册到autoload函数列表中,当 出现未定义的类的时候,SPL会按照注册的顺序逐个调 用被注册的autoload函数,这意味着你可以使用spl_autoload_register()注册多个autoload函数。
PDO还提供了更多功能,比如:
try{
$dsn=“mysql:host=localhost;dbname=test”;
$conn=newPDO($dsn,‘root’,’123456′);
$sql=“select * from user where id = :id”;
$stmt=$conn->prepare($sql);
$stmt->bindValue(“id”,1);
$stmt->execute();
$row=$stmt->fetch(PDO::FETCH_ASSOC);
var_dump($row);
}catch(PDOException$e){
echo$e->getMessage();
}
PDO是官方推荐的,更为通用的数据库访问方式,如果你没有特殊的需求,那么最好学习和使用POD,但如果你需要使用MySQL所特有的高级功能,那么你可能需要尝试一下MySQLi,因为PDO为了能够同时在多种数据库上使用,不会包含那些MySQL独有的功能。