如何在不同的自定义方法中使用数组类属性?

时间:2017-07-14 08:33:40

标签: php

我有一个这样的课程:

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);
        }
    }  

因此,在这种方法中,基于类属性,&#39; array_result&#39;类的属性由稍后在我的前端输出的值填充。

在该代码下面,我有一个名为charge()的方法,它可以进行不同的计算,并使用值填充类的chargeArray属性,这些值也在我的前端输出。

现在,我必须改进我的功能,所以我必须在我的charge()方法中实现一些东西,以便在我的constantAmortization()方法中将每次迭代的资本初始值/剩余百分比的值作为值。

我该怎么办?在我的想法中,我必须在我的charge()方法中使用result_array属性来迭代这个数组,并根据大写和剩余的值进行一些计算,但是当我尝试使用/显示时它会给我带来错误charge()方法中的result_array。我该怎么办?

1 个答案:

答案 0 :(得分:1)

$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来自farzan的ifarzan dotcom¶

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" 
?> 

重要说明:您必须使用{和}括起函数名称,否则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()`" 
?>