获取PDO对象并设置属性的方法

  介绍

这篇文章给大家分享的是有关获取PDO对象并设置属性的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

与任何其他数据库扩展一样,PDO可以直接从所选数据创建现有类的实例。但是,与其他扩展不同的是,PDO为强大而灵活的对象操作提供了许多特性。

要从查询结果创建单个对象,有两种方法。

<强> 1。使用熟悉的fetch()方法:

类用户{};=$美元支撑pdo→查询(& # 39;从用户选择名称限制1 & # 39;);   美元支撑→setFetchMode (PDO:: FETCH_CLASS, & # 39;用户# 39;);   $ user=$支撑→fetch ();

<强> 2。专用的fetchObject()方法:

类用户{};   $ user=$ pdo→查询(& # 39;从用户限制1 & # 39;选择名字)→fetchObject(& # 39;用户# 39;);

虽然这两个代码段都将为你提供相同的用户类实例,

/*对象(用户)# 3 (1){   (“name")=比;字符串(4)“John"   }*/

后一种方法看起来绝对更简洁。此外,如果使用了fetch()方法,但是没有使用这样的名称定义类,则将静默返回一个数组,而使用fetchObject()将抛出一个适当的错误。

当然,上面描述的两种方法都可以与一个熟悉的而语句一起使用,从数据库中获取结果行。

使用一个方便的<强> fetchAll() 强方法一次获取对象数组中所有返回的记录:

类用户{};   用户=美元pdo→查询(& # 39;从用户选择名字# 39;)→fetchAll (pdo:: FETCH_CLASS, & # 39;用户# 39;);

将给你一个数组,由一个用户类的对象组成,返回数据填充属性:

/*数组(2){   [0]=比;对象(用户)# 3 (1){   (“name")=比;字符串(4)“John"   }   [1]=比;对象(用户)# 4 (1){   (“name")=比;字符串(4)“Mike"   }   }*/

<强>注意强,你可以将此模式与<强> PDO:: FETCH_UNIQUE 和<强> PDO:: FETCH_GROUP 强组合使用,以获得由唯一字段索引的结果数组,或者分别使用非唯一字段对结果进行分组。

例如,下面的代码将返回一个数组,其中记录id将用作数组索引而不是连续数字。

类用户{};=$美元支撑pdo→查询(& # 39;选择id, id、名称、车从用户# 39;);   $用户=鷉etchAll (PDO: FETCH_CLASS | PDO:: FETCH_UNIQUE, & # 39;用户# 39;);

无论选择哪种方法,查询返回的所有列都将按照以下规则分配给对应的类属性:

1。如果有一个类属性,它的名称与列名相同,则将为该属性分配列值

2。如果没有这样的属性,那么将调用一个魔术方法__set ()

3。如果没有为该类定义__set()方法,那么将创建一个公共属性并为其分配一个列值。

例如,这段代码

类用户   {   美元的公共名称;   }   $ user=$ pdo→查询(& # 39;SELECT *从用户限制1 & # 39;)→fetchObject(& # 39;用户# 39;);

将给你一个对象,所有属性自动分配,无论它们是否存在于类中:

/*对象(用户)# 3 (4){   (“id")=比;字符串(3)“104”;   (“name")=比;字符串(4)“John"   (“sex")=比;字符串(4)“male"   (“car")=比;字符串(6)“Toyota"   }*/

从这一点可以看的出,为了避免自动创建属性,你可以使用魔术方法__set()过滤掉属性。最简单的过滤技术就是一个空的__set()方法。使用它,只会设置现有的属性:

类用户   {   私人美元名称;   公共函数__set(名字,美元价值){}   }   $ user=$ pdo→查询(& # 39;SELECT *从用户限制1 & # 39;)→fetchObject(& # 39;用户# 39;);/*   数组(1){   [0]=比;对象(用户)# 3 (1){   【“name":“User":私人]=比;字符串(4)“John"   }   }*/

如上PDO还可以为私有属性分配值。

当然,对于新创建的对象,我们可能需要提供构造函数参数。为此,<强> fetchObject() 和<强> fetchAll() 强方法都有一个专用的参数,你可以使用它以数组的形式传递构造函数参数。

假设我们有一个用户类,它有一个汽车属性,可以通过提供的变量在构造函数中设置:

类用户{   公共函数__construct(汽车美元){   $ this→车=$车;   }   }

在获取记录时,我们应该添加一个带有构造函数参数的数组:

用户=美元pdo→查询(& # 39;从用户限制1 & # 39;选择名称)   →fetchAll (PDO:: FETCH_CLASS, & # 39;用户# 39;,[& # 39;卡特彼勒# 39;]);      $ user=$ pdo→查询(& # 39;从用户限制1 & # 39;选择名称)   →fetchObject(& # 39;用户# 39;,[& # 39;卡特彼勒# 39;]);

获取PDO对象并设置属性的方法