如何在对象上下文中正确使用$ this?

时间:2014-03-02 18:57:15

标签: php netbeans web

我很难使用$ this在php类中创建一个get函数:

public function getFxRate($currencyInputCode, $currencyOutputCode) {
    //Getting the currency
    return $this->fxRates[$currencyOutputCode][array_search(1.0, $this->fxRates[$currencyInputCode])];
}

$ fxRates数组在此处指定:

public function __construct() {
    $this->ini = parse_ini_file(FXCALC);
    $handle = fopen($this->getIniArray()[self::RATESFILE], 'r');
    $this->fxCurriences = fgetcsv($handle);
    $k = 0;
    for ($i = 0; !feof($handle); $i++) {
        $tempMultiArray[$i] = fgetcsv($handle);
    }
    fclose($handle);

    foreach ($this->getCurrencies() as $value) {
        for ($i = 0; $i < count($this->getCurrencies()); $i++) {
        $this->fxRates[$value][$i] = $tempMultiArray[$i][$k];
        }
        $k++;
    }
    echo $this->fxRates['CAD'][0];
}

并在此处初始化:

private $fxRates = array();

我不明白为什么$这会显示上面的get函数的错误,但这两个函数运行正常:

public function getIniArray() {
    return $this->ini;
}

public function getCurrencies() {
    return $this->fxCurriences;
}

以下是我收到的错误:

致命错误:在第65行的C:\ xampp \ htdocs \ PhpMidtermBP \ FxDataModel.php中不在对象上下文中时使用$ this

1 个答案:

答案 0 :(得分:1)

$ this指的是你看到你正在静态调用该方法的错误的实例。

您需要实例化该类,然后运行getFxRate方法以使$ this起作用。

例如:

$fx = new MyFxClass();
$fx->getFxRate( $arg1, $arg2 );