我有这样一门课:
class Calculator
{
protected $date;
protected $capital;
protected $rate;
protected $frequency;
protected $duration;
protected $charges;
protected $forcedPayments;
protected $result_array;
protected $chargesArray;
public function constantAmortization($date, $capital, $rate, $duration, $frequency, $charges)
{
$allPayments = $allInterests = array();
$amortization = $capital / $duration;
$interestTotal = 0; $amortizationTotal = 0;
for($i = 0; $i < $duration; $i++){
$interest = $capital * ($rate / 100) / $frequency;
array_push($allInterests,$interest);
$payment = $amortization + $interest;
array_push($allPayments,$payment);
$remaining = $capital - $amortization;
//calculate totals for table headers output in twig :
$interestTotal += $interest; $amortizationTotal += $amortization;
$inverseCapital = $capital * -1;
$paymentTotal = $amortizationTotal + $interestTotal;
$this->result_array[$i] = result_array(
'Date' => $date->format('d/m/y'),
'Capital' => $capital,
'Rate' => $rate,
'Interest' => $interest,
'Payment' => $payment,
'Amortization' => $amortization,
'Remaining' => $remaining,
'InterestTotal' => $interestTotal,
'AmortizationTotal' => $amortizationTotal,
'PaymentTotal' => $paymentTotal,
'InverseCapital' => $inverseCapital,
);
$capital = $remaining;
$months = (12/$frequency). ' months';
$date->modify($months);
}
} 因此,在此方法中,基于类属性,类的“array_result”属性由稍后在前端输出的值填充。
在这段代码下面,我有一个名为()的方法,它进行不同的计算,并用值填充类的属性,这些值也是在前端输出的。
现在,我必须改进我的函数,所以我必须在()方法中实现一些东西,以便在我的()方法中的每一次迭代中,将费用的值作为资本初始/保留的百分比。
我该怎么做呢?在我的想法中,我必须在result_array ()方法中使用result_array属性,迭代这个数组,并基于大写和剩余值进行一些计算,但是当我试图在()方法中使用/显示result_array时,它会给我带来错误。我要做什么?
发布于 2017-07-14 10:04:44
$Calc = new Calculator;
$output = Calc::constantAmortization($date, $capital, $rate, $duration, $frequency, $charges);
/* or */
$output = Calc->constantAmortization($date, $capital, $rate, $duration, $frequency, $charges);伟大的解释: http://php.net/manual/en/language.oop5.php
PHP 5在访问成员变量和成员函数方面非常灵活。乍一看,这些访问方法看起来可能不寻常,也没有必要;但它们有时非常有用;特别是当您使用SimpleXML类和对象时。我在SimpleXML函数参考部分发表了类似的评论,但这个评论更全面。
我使用以下类作为所有示例的参考:
<?php
class Foo {
public $aMemberVar = 'aMemberVar Member Variable';
public $aFuncName = 'aMemberFunc';
function aMemberFunc() {
print 'Inside `aMemberFunc()`';
}
}
$foo = new Foo;
?> 可以使用另一个变量作为名称访问对象中的成员变量:
<?php
$element = 'aMemberVar';
print $foo->$element; // prints "aMemberVar Member Variable"
?> 或使用功能:
<?php
function getVarName()
{ return 'aMemberVar'; }
print $foo->{getVarName()}; // prints "aMemberVar Member Variable"
?> 重要注意:您必须用{ and }包围函数名,否则PHP会认为您正在调用对象的成员函数"foo“。
您也可以使用常量或文字:
<?php
define(MY_CONSTANT, 'aMemberVar');
print $foo->{MY_CONSTANT}; // Prints "aMemberVar Member Variable"
print $foo->{'aMemberVar'}; // Prints "aMemberVar Member Variable"
?> 您还可以使用其他对象的成员:
<?php
print $foo->{$otherObj->var};
print $foo->{$otherObj->func()};
?> 您还可以使用上面的方法访问成员函数:
<?php
print $foo->{'aMemberFunc'}(); // Prints "Inside `aMemberFunc()`"
print $foo->{$foo->aFuncName}(); // Prints "Inside `aMemberFunc()`"
?>https://stackoverflow.com/questions/45098342
复制相似问题