1

我正在尝试从数组中打印数据。该数组来自一个类。我越来越

array(0) { }

代替:

Array ( [0] => header_index.php [1] => footer.php )

代码是:

<?php
class TemplateModel {
    public function getTemplate($template = "index"){
        switch($template){
            case "index":
                $templateconfig = array("header_index.php","footer.php");
                break;
        }
        return $templateconfig;
    }
}
$temodel = new TemplateModel(); 
var_dump(get_object_vars($temodel));
$temodel -> getTemplate();
?>

我做错了什么?提前致谢

4

4 回答 4

1
var_dump(get_object_vars($temodel)); 

将输出类成员$temodel。没有类成员变量,所以输出为空。如果你想输出你的数组,你必须例如这样做:

print_r($temodel -> getTemplate());
于 2013-07-29T16:22:54.190 回答
0

我的直接想法是,您似乎在函数“getTemplate”中设置变量,并且直到 var_dump 之后才被调用。

ADD:我刚刚注意到你没有捕获函数的返回。您正在 var_dumping 从该类创建的对象。

使固定:

<?php
class TemplateModel {
    public function getTemplate($template = "index"){
        switch($template){
            case "index":
                $templateconfig = array("header_index.php","footer.php");
                break;
        }
        return $templateconfig;
    }
}
$temodel = new TemplateModel(); 
$returned_var = $temodel -> getTemplate();
var_dump($returned_var);
?>

如果要将数组设置为对象的变量,那是另一个问题。

于 2013-07-29T16:22:51.610 回答
0

您的对象本身没有要通过调用返回的变量(属性)get_object_vars()$templateconfig变量只存在于函数范围内,不是getTemplate()对象的属性。

如果您的意图是使其成为对象的属性,则应该执行以下操作:

class TemplateModel {
    private $template_config = array(
        'index' => array("header_index.php","footer.php"),
        // add other configs here
    );

    public function getTemplate($template = "index"){
        if(empty($template)) {
            throw new Exception('No value specified for $template');
        } else if (!isset($this->template_config[$template])) {
            throw new Exception('Invalid value specified for $template');
        }

        return $this->template_config[$template];
    }
}

$temodel = new TemplateModel();
var_dump($temodel->getTemplate());

请注意,如果您调用get_object_vars(),您仍然会得到一个空数组,因为我已将$template_config变量设为私有,从而强制调用者使用该getTemplate()方法访问模板数据。

于 2013-07-29T16:23:36.537 回答
0

在调用 getTemplate() 之前,您似乎没有初始化 $templateconfig 变量。直到 var_dump() 之后才调用它。

所以基本上,你正在转储一个没有初始化成员属性的对象,这就是你看到一个空数组的原因。

于 2013-07-29T16:25:35.853 回答