首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不同的自类方法中使用数组类属性?

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

Stack Overflow用户
提问于 2017-07-14 08:33:40
回答 1查看 109关注 0票数 0

我有这样一门课:

代码语言:javascript
复制
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时,它会给我带来错误。我要做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-14 10:04:44

代码语言:javascript
复制
$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函数参考部分发表了类似的评论,但这个评论更全面。

我使用以下类作为所有示例的参考:

代码语言:javascript
复制
<?php 
class Foo { 
    public $aMemberVar = 'aMemberVar Member Variable'; 
    public $aFuncName = 'aMemberFunc'; 


    function aMemberFunc() { 
        print 'Inside `aMemberFunc()`'; 
    } 
} 

$foo = new Foo; 
?> 

可以使用另一个变量作为名称访问对象中的成员变量:

代码语言:javascript
复制
<?php 
$element = 'aMemberVar'; 
print $foo->$element; // prints "aMemberVar Member Variable" 
?> 

或使用功能:

代码语言:javascript
复制
<?php 
function getVarName() 
{ return 'aMemberVar'; } 

print $foo->{getVarName()}; // prints "aMemberVar Member Variable" 
?> 

重要注意:您必须用{ and }包围函数名,否则PHP会认为您正在调用对象的成员函数"foo“。

您也可以使用常量或文字:

代码语言:javascript
复制
<?php 
define(MY_CONSTANT, 'aMemberVar'); 
print $foo->{MY_CONSTANT}; // Prints "aMemberVar Member Variable" 
print $foo->{'aMemberVar'}; // Prints "aMemberVar Member Variable" 
?> 

您还可以使用其他对象的成员:

代码语言:javascript
复制
<?php 
print $foo->{$otherObj->var}; 
print $foo->{$otherObj->func()}; 
?> 

您还可以使用上面的方法访问成员函数:

代码语言:javascript
复制
<?php 
print $foo->{'aMemberFunc'}(); // Prints "Inside `aMemberFunc()`" 
print $foo->{$foo->aFuncName}(); // Prints "Inside `aMemberFunc()`" 
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45098342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档