0

構成ファイルパーサーを作成していて、Config.phpファイルにgetVals()という関数がありますが、テストで呼び出すと、「未定義の関数」エラーがスローされるようです。

Config.php

<?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のWebサイトで、PHPオブジェクト指向プログラミングの詳細をご覧ください。

于 2012-11-02T09:01:02.897 に答える
1

$cfg->getVals();Nowの代わりに使用 $cfg.getVals(); してください。連結を実行しようとしています。

于 2012-11-02T09:02:36.537 に答える
1

呼び出しは->演算子を使用する必要があります

$cfg.getVals(); 

する必要があります

$cfg->getVals();
于 2012-11-02T09:02:14.747 に答える
0

おっと...'->'を逃しました。笑。すべての人に良いキャッチ。

于 2012-11-02T09:07:12.823 に答える