我是PHP编程的新手,但过去曾在.NET中编写应用程序。我正在运行一个检索结果集作为对象的示例。例如,我在名为myClass.php的文件中有如下所示的类:
<?php
namespace MyNameSpace;
Class myClass{
private $var1
, $var2;
public function __constructor(){
}
//getters and setters for private variables below
} //end myClass
在另一个课程中,我有以下内容:
<?php
namespace OtherSpace;
require_once 'myClass.php';
$connection = new PDO($dsn, $user, $pwd);
$query = 'SELECT var1, var2 FROM someTable';
$statement = $connection->prepare($query);
$statement->execute();
$statement->setFetchMode(PDO::FETCH_CLASS, 'myClass');
$result = $statement->fetchAll();
print_r($result);
} // end class
但是,没有任何内容发送到浏览器窗口。如果我从上面的代码中删除了setFetchMode语句,那么我会将标准结果集数组发送回浏览器。
我不明白我在做什么会阻止结果集加载到myClass对象的数组中。
感谢您的帮助。
答案 0 :(得分:1)
您在new PDO
命名空间中创建\OtherSpace
。它应该是\PDO
,或者您应该在use PDO;
之后的文件开头使用namespace OtherSpace;
。
也许myClass
有同样的问题,因为它位于\MyNameSpace
而不是\OtherSpace
。
$statement->setFetchMode(\PDO::FETCH_CLASS, '\MyNameSpace\myClass');
因此请使用类的全名。
答案 1 :(得分:0)
您正在使用命名空间,您必须告诉PDO命名空间名称:
$statement->setFetchMode(PDO::FETCH_CLASS, 'MyNameSpace\myClass');
方法不知道它们被调用哪个命名空间,只知道它们自己的。