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 条评论
登录 后参与评论

相关文章

来自专栏不会写文章的程序员不是好厨师

日志那些事儿——Logback源码解析

在上篇文章日志漫谈中谈到,日志在监控报警、查错分析等方面有着非常重要的应用。Logback作为目前最火的日志系统,本文就简单分析一下logback日志打印的过程...

601
来自专栏阿杜的世界

通过EmbeddedServletContainerCustomizer接口调优Tomcat

通过在application.properties设置对应的key-value对,可以配置Spring Boot应用程序的很多特性,例如POST、SSL、MyS...

611
来自专栏大内老A

[WCF安全系列]绑定、安全模式与客户端凭证类型:WSHttpBinding与WSDualHttpBinding

在上一篇文章中,我们详细地介绍了BasicHttpBinding具有怎样的安全模式的支持,已经在各种安全模式下分别可以采用怎样的客户端凭证。接下来我们来进一步分...

1677
来自专栏Android干货

安卓开发_深入理解Content Provider

1784
来自专栏Google Dart

Dart 服务端开发 shelf_bind 包

shelf_bind倾向于约定优于配置,因此您可以编写必要的最小代码,但仍然可以根据需要覆盖默认值。

632
来自专栏Java 源码分析

MyBatis笔记二:配置

可以看到我们使用 <properties resource="db.properties"/> 引入了我们的数据据库的配置文件,然后这个标签有两个属性 : r...

1472
来自专栏大内老A

ASP.NET MVC以ValueProvider为核心的值提供系统: ValueProviderFactory

在ASP.NET Model绑定系统中,用于提供数据值的ValueProvider对象通过ValueProviderFactory来创建。在ASP.NET MV...

1878
来自专栏Java学习网

Java面试题系列之技术框架部分(一)——每天学5个知识

1、iBatis与Hibernate有什么不同? 相同点:屏蔽jdbc api的底层访问细节,使用我们不用与jdbc api打交道,就可以访问数据。 jdbc ...

2798
来自专栏大内老A

如何通过Remoting实现双向通信

Remoting是NET平台下比较成熟高效的分布式技术,我们习惯采用传统的远程调用的方式使用Remoting。在客户端所在的Application Domain...

1868
来自专栏GreenLeaves

EF基础知识小记三(设计器=>数据库)

本文主要介绍通过EF的设计器来同步数据库和对应的实体类.并使用生成的实体上下文,来进行简单的增删查该操作 1、通过EF设计器创建一个简单模型 (1)、右键目标项...

1835

扫描关注云+社区