我是一名学习者,我有一个 db 类来帮助我在mySQL中连接和获取结果。
$set = $db->get_row("SELECT * FROM users");
echo $set->name;
这样我就在课堂外使用echo结果。
现在我已经创建了另一个类名用户并且它具有此功能
public function name() {
global $db;
$set = $db->get_row("SELECT * FROM users");
$this->name = $set->name;
}
初始化类用户后,当我尝试回显 $ user-> name 时,我没有得到预期的结果。
注意我已在用户
中的 var $ name; 上方声明答案 0 :(得分:3)
我非常担心我在这里看到的几件事
name()
对于该方法应该做什么非常不通信。请记住,方法是操作 - 尝试在他们的名字中给他们一些动词。global
在课程中的使用(甚至是global
期间的使用)。User::name()
,这就是您的测试失败的原因以下是解决这些问题的一些代码。
<?php
class DB
{
/* Your methods and stuff here */
}
class User
{
protected $db;
protected $name;
public function __construct( DB $db )
{
$this->db = $db;
}
public function getName()
{
if ( is_null( $this->name ) )
{
$set = $this->db->get_row( "SELECT * FROM users" );
$this->name = $set->name;
}
return $this->name;
}
}
$db = new DB();
$user = new User( $db );
echo $user->getName();
答案 1 :(得分:1)
class DB
{
public function get_row($q)
{
# do query and store in object
return $object;
}
}
class User
{
public $name;
public function __construct()
{
$this->name();
}
public function name() {
global $db;
$set = $db->get_row("SELECT * FROM users");
echo "<pre>".print_r($set)."</pre>"; # make sure $set is returning what you expected.
$this->name = $set->name;
}
}
$db = new DB();
$user = new User();
echo $user->name;
答案 2 :(得分:0)
我非常抱歉,我发现问题出在我身上,我正在使用cookies,并且有两个饼干设置了问题:(