PHP类总结

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还提供了更多功能,比如:

  • 面向对象风格接口
  • SQL预编译,占位符语法
  • 更高的执行效率,作为官方推荐,有特别的性能优化
  • 支持大部分SQL数据库,更换数据库无需改动代码

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独有的功能。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2014-10-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2496
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2612
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2605
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

4798
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2667
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3035
来自专栏转载gongluck的CSDN博客

cocos2dx 打灰机

#include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

5286
来自专栏魂祭心

原 canvas绘制clock

4004
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

1990

扫码关注云+社区