在php中返回对象

时间:2010-05-04 13:55:33

标签: php object

我看到类似的问题,但我似乎遇到了比问题更基本的问题。如何在php中声明变量?我的具体问题是我有一个函数读取数据库表并将记录(只有一个)作为对象返回。

class User{
   public $uid;
   public $name;
   public $status;
}

function GetUserInfo($uid)
{
   // Query DB

   $userObj = new User();

   // convert the result into the User object.

   var_dump($userObj);   
   return $userObj;
}

// In another file I call the above function.

....

$newuser = GetUserInfo($uid);

var_dump($newuser);

这里有什么问题,我无法理解。基本上,函数var_dump()中的GetUserInfo()工作正常。调用var_dump()后,GetUserInfo()外部不起作用。

4 个答案:

答案 0 :(得分:10)

使用PHP5可以:

<pre>
<?php

class User{
   public $uid;
   public $name;
   public $status;
}

function GetUserInfo($uid)
{

   $userObj = new User();
   $userObj->uid=$uid;
   $userObj->name='zaf';
   $userObj->status='guru';
   return $userObj;
}

$newuser = GetUserInfo(1);
var_dump($newuser);

?>
</pre>

object(User)#1 (3) {
  ["uid"]=>
  int(1)
  ["name"]=>
  string(3) "zaf"
  ["status"]=>
  string(4) "guru"
}

答案 1 :(得分:0)

首先创建User类的新实例。然后使用该实例调用您的函数并提供$ uid参数,以便您的查询像shoudl一样执行。如果您的数据表中存在匹配,则您的Userobject将填充DB结果。

我个人更喜欢使用静态调用,它使您的代码更具可读性和紧凑性。

差异:

$userObj = new User();
$user = $userObj->GetUserInfo('your uid');

或者

$user = User::GetUserInfo('your uid');

我在第4行看到一个奇怪的}。如果我错了,请纠正我,但我认为它应该在}函数GetUserInfo($uid)之后。

答案 2 :(得分:0)

我遇到了同样的问题。但是我正在使用5.6.1。这就是我做错了:

class component
{
public function myFunc() 
{
$obj = new SomeComp();
try {
do some work 
return $obj;
} finally {
$obj = null;
}
}

类方法中的所有内容都运行正常,$ obj在返回时有信息。但是,以下结果提供了一个空值:

$myClass = new component();
$myObj = $myClass->myFunc();
var_dump($myObj);  // returns NULL

设置$ obj = null;在类方法中尝试...最终销毁$ obj使$ myObj为NULL。删除了$ obj = null;并且该方法返回正确的信息。

答案 3 :(得分:0)

new stdClass();应该可以解决问题。