2014-09-18 63 views
-1

即时通讯不是一个有经验的程序员和即时通讯试图了解我与我创建的类的问题。php类内类变量

我有类A的私有变量,这个私有变量存储查询MySQL数据库的结果,并通过即时通讯类A.公共函数访问此变量

我的目标是呼应了私有变量的值通过公共函数。我的问题是,当它存储查询结果时,这个私有变量在类中被转换。

这里私有变量的var_dump

object(stdClass)#4 (1) { 
    ["count(*)"]=> string(1) "8" 
} 

IM如何回声出号真的糊涂 “8”

我尝试这样的:

echo $this->private 

但预期PHP犯规像这样工作,并告诉我这一点:

"Object of class stdClass could not be converted to string" 

任何人都可以指向正确的方向吗?

这里是代码:

class Quiz { 

    private $db; 
    private $query; 
    private $questions; 
    private $answers; 
    private $total; 

    public function __construct(){ 
     $this->db = new connection(); 
     $this->db = $this->db->dbConnection();  
    } 

    public function NumRows ($quiz) { 
     $this->query = $this->db->prepare("Select count(*) FROM ".$quiz.""); 
     $this->query->execute(); 
     $this->total = $this->query->fetchObject(); 
     var_dump($this->total); 
     echo $this->total; 
    } 


} 


$quiz = new Quiz(); 
$quiz->NumRows("01_ospf"); 
+1

这将是有一段代码很有帮助。 – msfoster 2014-09-18 19:22:55

+0

'SELECT COUNT(*)AS count'。然后:'echo $ quiz-> getPrivate() - > count;' – Flavius 2014-09-18 19:25:38

+0

除了ENTIRE代码库中只有一个函数外,其他函数永远不会执行'echo':一个看起来像'render($ template,array $ data)'的函数调用'extract()'然后'include $ template;'。其他地方,请正确使用返回值。 – Flavius 2014-09-18 19:28:18

回答

3

$this->private是一个对象,所以你需要访问属性。该物业被命名为count(*)。因此,使用这样的:

echo $this->private->{"count(*)"}; 

你应该给列一个别名,所以你不必使用这种令人费解的语法。例如。如果你这样做:

SELECT COUNT(*) AS count ... 

,那么你可以这样写:

echo $this->private->count;