我有一个班级做一些简单的计算。
class CalculatorsController extends Controller {
public function actionroadTaxCalculator() {
// form inputs are valid, do something here
$cc = $this->rem_commas(trim($_calc['cc']));
$sOptions = trim($_calc['fuel']);
$location = trim($_calc['location']);
$use = trim($_calc['use']);
$this->roadtaxCalculation(array('cc' => $cc, 'fuel' => $sOptions, 'location' => $location, 'use' => $use), true);
}
/*
* Where all the roadtax calculation happens
*
*/
public static function roadtaxCalculation($arr, $isAjax = true) {
$roadtax = ($sOptions == "petrol") ? 55 : 55;
CalculatorsController::fuel($roadtax, $isAjax);
}
/*
* function to format and echo road tax
*/
public function fuel($RoadTax, $isAjax = true)
{
$RoadTax = number_format(round($RoadTax, 2), 2);
//TODO: add list of cars matching CC
$matches = '';
if (!empty($isAjax))
{
echo CJSON::encode(array(
'rtax'=> $RoadTax,
'matches'=> $matches,
));
Yii::app()->end();
}
else
{
return $RoadTax;
}
}
}
roadtaxCalculation()
函数已简化为此问题,但基本上它会调用fuel()
以便稍后返回计算。它不会,但当我echo
它确实有效。
答案 0 :(得分:0)
当您将方法定义为静态时(就像使用roadtaxCalculation
一样),您不能使用$this
。静态方法不绑定到类CalculatorsController
的任何实例。换句话说,您可以在没有对象的情况下使用它,这就是您无法使用$this
的原因。还有哪些fuel
必须是静态的。
您在return
中有else
声明,因此如果您看到回复的文字else
将无法执行。