我看到类似的问题,但我似乎遇到了比问题更基本的问题。如何在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()
外部不起作用。
答案 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();应该可以解决问题。