0

我正在编写一个配置文件解析器,并在我的 Config.php 文件中有一个名为 getVals() 的函数,但显然当我在测试中调用它时,它会引发“未定义函数”错误。

配置文件

<?php

require_once '../extlib/pear/Config/Lite.php';

class Config {

private $config;

function __construct($conf) {
    $this->config = new Config_Lite();
    echo "calling open...<br>";
    $this->open($conf);
    echo "open done...<br>";
}

function open($cfile) {
    if (file_exists($cfile)) {
        $this->config->read($cfile);
    } else {
        file_put_contents($cfile, "");
        $this->open($cfile);
    }
}

function getVals() {
    return $this->config;
}

function setVals($group, $key, $value) {
    $this->config->set($group, $key, $value);
}

function save() {
    $this->config->save();
}

}

?>

cfgtest.php 中的测试类

<?php

error_reporting(E_ALL);
ini_set("display_errors", 1);

require_once '../util/Config.php';

$cfile = "../../test.cfg";
$cfg = new Config($cfile);
if (is_null($cfg)) {
    echo "NULL";
} else {
    echo $cfg.getVals();
}


?>

输出

calling open...
open done...
Fatal error: Call to undefined function getVals() in cfgtest.php on line 13

我想知道当函数已经存在时为什么会出现未定义的函数错误。

4

4 回答 4

7

在 php 中调用方法或对象的成员,使用 -> 操作符:

if (is_null($cfg)) 
{
     echo "NULL"; 
} 
else 
{
     echo $cfg->getVals(); 
}

在PHP 的网站上了解有关 PHP 面向对象编程的更多信息。

于 2012-11-02T09:01:02.897 回答
1

呼叫应使用 -> 运算符

$cfg.getVals(); 

应该

$cfg->getVals();
于 2012-11-02T09:02:14.747 回答
1

使用 $cfg->getVals();而不是$cfg.getVals(); 现在您正在尝试进行连接!

于 2012-11-02T09:02:36.537 回答
0

哎呀...错过了'->'。哈哈。对所有人都有好处。

于 2012-11-02T09:07:12.823 回答