From 4938f16cf352923f7bfab7ef67d2c41f9d3d9768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Uruba?= Date: Fri, 4 Sep 2015 18:35:58 +0200 Subject: [PATCH] =?UTF-8?q?=E2=80=93=20added=20manufactureInstance=20metho?= =?UTF-8?q?d=20to=20the=20CalculatorFactoryAbstract?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Factories/AnnuityCalculatorFactory.php | 52 ++++++++----- .../BondDurationCalculatorFactory.php | 73 +++++++++++-------- .../BondFairValueCalculatorFactory.php | 73 +++++++++++-------- .../Factories/BondYTMCalculatorFactory.php | 73 +++++++++++-------- .../Factories/DebtAmortizatorFactory.php | 52 ++++++++----- ...DividendDiscountModelCalculatorFactory.php | 24 +++--- ...StockInvestmentRatiosCalculatorFactory.php | 11 ++- .../StockDividendDiscountModelCalculator.php | 2 +- src/FinanCalc.php | 5 +- .../Calculator/CalculatorFactoryAbstract.php | 12 +++ 10 files changed, 233 insertions(+), 144 deletions(-) diff --git a/src/Calculators/Factories/AnnuityCalculatorFactory.php b/src/Calculators/Factories/AnnuityCalculatorFactory.php index db8daa2..2ed710b 100644 --- a/src/Calculators/Factories/AnnuityCalculatorFactory.php +++ b/src/Calculators/Factories/AnnuityCalculatorFactory.php @@ -19,11 +19,14 @@ class AnnuityCalculatorFactory extends CalculatorFactoryAbstract { * @return AnnuityCalculator */ public function newYearlyAnnuity($annuitySinglePaymentAmount, $annuityNoOfCompoundingPeriods, $annuityInterest) { - return new AnnuityCalculator( - $annuitySinglePaymentAmount, - $annuityNoOfCompoundingPeriods, - TimeUtils::getDaysFromYears(1), - $annuityInterest); + return $this->manufactureInstance( + [ + $annuitySinglePaymentAmount, + $annuityNoOfCompoundingPeriods, + TimeUtils::getDaysFromYears(1), + $annuityInterest + ] + ); } /** @@ -33,11 +36,14 @@ public function newYearlyAnnuity($annuitySinglePaymentAmount, $annuityNoOfCompou * @return AnnuityCalculator */ public function newMonthlyAnnuity($annuitySinglePaymentAmount, $annuityNoOfCompoundingPeriods, $annuityInterest) { - return new AnnuityCalculator( - $annuitySinglePaymentAmount, - $annuityNoOfCompoundingPeriods, - TimeUtils::getDaysFromMonths(1), - $annuityInterest); + return $this->manufactureInstance( + [ + $annuitySinglePaymentAmount, + $annuityNoOfCompoundingPeriods, + TimeUtils::getDaysFromMonths(1), + $annuityInterest + ] + ); } /** @@ -47,11 +53,14 @@ public function newMonthlyAnnuity($annuitySinglePaymentAmount, $annuityNoOfCompo * @return AnnuityCalculator */ public function newDailyAnnuity($annuitySinglePaymentAmount, $annuityNoOfCompoundingPeriods, $annuityInterest) { - return new AnnuityCalculator( - $annuitySinglePaymentAmount, - $annuityNoOfCompoundingPeriods, - 1, - $annuityInterest); + return $this->manufactureInstance( + [ + $annuitySinglePaymentAmount, + $annuityNoOfCompoundingPeriods, + 1, + $annuityInterest + ] + ); } /** @@ -60,11 +69,14 @@ public function newDailyAnnuity($annuitySinglePaymentAmount, $annuityNoOfCompoun * @return AnnuityCalculator */ public function newPerpetuity($annuitySinglePaymentAmount, $annuityInterest) { - return new AnnuityCalculator( - $annuitySinglePaymentAmount, - 0, - 0, - $annuityInterest); + return $this->manufactureInstance( + [ + $annuitySinglePaymentAmount, + 0, + 0, + $annuityInterest + ] + ); } } } \ No newline at end of file diff --git a/src/Calculators/Factories/BondDurationCalculatorFactory.php b/src/Calculators/Factories/BondDurationCalculatorFactory.php index 2ad9b58..dcbf64a 100644 --- a/src/Calculators/Factories/BondDurationCalculatorFactory.php +++ b/src/Calculators/Factories/BondDurationCalculatorFactory.php @@ -22,11 +22,14 @@ class BondDurationCalculatorFactory extends CalculatorFactoryAbstract { * @return BondDurationCalculator */ public function newAnnualCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bondAnnualYield, $bondYearsToMaturity) { - return new BondDurationCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondAnnualYield, - $bondYearsToMaturity); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondAnnualYield, + $bondYearsToMaturity + ] + ); } /** @@ -37,12 +40,15 @@ public function newAnnualCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bon * @return BondDurationCalculator */ public function newSemiAnnualCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bondAnnualYield, $bondYearsToMaturity) { - return new BondDurationCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondAnnualYield, - $bondYearsToMaturity, - 2); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondAnnualYield, + $bondYearsToMaturity, + 2 + ] + ); } @@ -54,12 +60,15 @@ public function newSemiAnnualCouponsBond($bondFaceValue, $bondAnnualCouponRate, * @return BondDurationCalculator */ public function newQuarterlyCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bondAnnualYield, $bondYearsToMaturity) { - return new BondDurationCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondAnnualYield, - $bondYearsToMaturity, - 4); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondAnnualYield, + $bondYearsToMaturity, + 4 + ] + ); } @@ -71,12 +80,15 @@ public function newQuarterlyCouponsBond($bondFaceValue, $bondAnnualCouponRate, $ * @return BondDurationCalculator */ public function newMonthlyCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bondAnnualYield, $bondYearsToMaturity) { - return new BondDurationCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondAnnualYield, - $bondYearsToMaturity, - 12); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondAnnualYield, + $bondYearsToMaturity, + 12 + ] + ); } @@ -89,12 +101,15 @@ public function newMonthlyCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bo * @return BondDurationCalculator */ public function newCustomCouponFrequencyBond($bondFaceValue, $bondAnnualCouponRate, $bondAnnualYield, $bondYearsToMaturity, $bondPaymentFrequency) { - return new BondDurationCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondAnnualYield, - $bondYearsToMaturity, - $bondPaymentFrequency); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondAnnualYield, + $bondYearsToMaturity, + $bondPaymentFrequency + ] + ); } } diff --git a/src/Calculators/Factories/BondFairValueCalculatorFactory.php b/src/Calculators/Factories/BondFairValueCalculatorFactory.php index 8e87967..52ebf74 100644 --- a/src/Calculators/Factories/BondFairValueCalculatorFactory.php +++ b/src/Calculators/Factories/BondFairValueCalculatorFactory.php @@ -21,11 +21,14 @@ class BondFairValueCalculatorFactory extends CalculatorFactoryAbstract { * @return BondFairValueCalculator */ public function newAnnualCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bondVIR, $bondYearsToMaturity) { - return new BondFairValueCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondVIR, - $bondYearsToMaturity); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondVIR, + $bondYearsToMaturity + ] + ); } /** @@ -36,12 +39,15 @@ public function newAnnualCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bon * @return BondFairValueCalculator */ public function newSemiAnnualCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bondVIR, $bondYearsToMaturity) { - return new BondFairValueCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondVIR, - $bondYearsToMaturity, - 2); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondVIR, + $bondYearsToMaturity, + 2 + ] + ); } /** @@ -52,12 +58,15 @@ public function newSemiAnnualCouponsBond($bondFaceValue, $bondAnnualCouponRate, * @return BondFairValueCalculator */ public function newQuarterlyCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bondVIR, $bondYearsToMaturity) { - return new BondFairValueCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondVIR, - $bondYearsToMaturity, - 4); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondVIR, + $bondYearsToMaturity, + 4 + ] + ); } /** @@ -68,12 +77,15 @@ public function newQuarterlyCouponsBond($bondFaceValue, $bondAnnualCouponRate, $ * @return BondFairValueCalculator */ public function newMonthlyCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bondVIR, $bondYearsToMaturity) { - return new BondFairValueCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondVIR, - $bondYearsToMaturity, - 12); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondVIR, + $bondYearsToMaturity, + 12 + ] + ); } /** @@ -85,12 +97,15 @@ public function newMonthlyCouponsBond($bondFaceValue, $bondAnnualCouponRate, $bo * @return BondFairValueCalculator */ public function newCustomCouponFrequencyBond($bondFaceValue, $bondAnnualCouponRate, $bondVIR, $bondYearsToMaturity, $bondPaymentFrequency) { - return new BondFairValueCalculator( - $bondFaceValue, - $bondAnnualCouponRate, - $bondVIR, - $bondYearsToMaturity, - $bondPaymentFrequency); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondAnnualCouponRate, + $bondVIR, + $bondYearsToMaturity, + $bondPaymentFrequency + ] + ); } } } \ No newline at end of file diff --git a/src/Calculators/Factories/BondYTMCalculatorFactory.php b/src/Calculators/Factories/BondYTMCalculatorFactory.php index 2dc24ea..ec244b6 100644 --- a/src/Calculators/Factories/BondYTMCalculatorFactory.php +++ b/src/Calculators/Factories/BondYTMCalculatorFactory.php @@ -22,11 +22,14 @@ class BondYTMCalculatorFactory extends CalculatorFactoryAbstract { * @internal param $bondVIR */ public function newAnnualCouponsBond($bondFaceValue, $bondMarketValue, $bondAnnualCouponRate, $bondYearsToMaturity) { - return new BondYTMCalculator( - $bondFaceValue, - $bondMarketValue, - $bondAnnualCouponRate, - $bondYearsToMaturity); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondMarketValue, + $bondAnnualCouponRate, + $bondYearsToMaturity + ] + ); } /** @@ -38,12 +41,15 @@ public function newAnnualCouponsBond($bondFaceValue, $bondMarketValue, $bondAnnu * @internal param $bondVIR */ public function newSemiAnnualCouponsBond($bondFaceValue, $bondMarketValue, $bondAnnualCouponRate, $bondYearsToMaturity) { - return new BondYTMCalculator( - $bondFaceValue, - $bondMarketValue, - $bondAnnualCouponRate, - $bondYearsToMaturity, - 2); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondMarketValue, + $bondAnnualCouponRate, + $bondYearsToMaturity, + 2 + ] + ); } /** @@ -55,12 +61,15 @@ public function newSemiAnnualCouponsBond($bondFaceValue, $bondMarketValue, $bond * @internal param $bondVIR */ public function newQuarterlyCouponsBond($bondFaceValue, $bondMarketValue, $bondAnnualCouponRate, $bondYearsToMaturity) { - return new BondYTMCalculator( - $bondFaceValue, - $bondMarketValue, - $bondAnnualCouponRate, - $bondYearsToMaturity, - 4); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondMarketValue, + $bondAnnualCouponRate, + $bondYearsToMaturity, + 4 + ] + ); } /** @@ -72,12 +81,15 @@ public function newQuarterlyCouponsBond($bondFaceValue, $bondMarketValue, $bondA * @internal param $bondVIR */ public function newMonthlyCouponsBond($bondFaceValue, $bondMarketValue, $bondAnnualCouponRate, $bondYearsToMaturity) { - return new BondYTMCalculator( - $bondFaceValue, - $bondMarketValue, - $bondAnnualCouponRate, - $bondYearsToMaturity, - 12); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondMarketValue, + $bondAnnualCouponRate, + $bondYearsToMaturity, + 12 + ] + ); } /** @@ -90,12 +102,15 @@ public function newMonthlyCouponsBond($bondFaceValue, $bondMarketValue, $bondAnn * @internal param $bondVIR */ public function newCustomCouponFrequencyBond($bondFaceValue, $bondMarketValue, $bondAnnualCouponRate, $bondYearsToMaturity, $bondPaymentFrequency) { - return new BondYTMCalculator( - $bondFaceValue, - $bondMarketValue, - $bondAnnualCouponRate, - $bondYearsToMaturity, - $bondPaymentFrequency); + return $this->manufactureInstance( + [ + $bondFaceValue, + $bondMarketValue, + $bondAnnualCouponRate, + $bondYearsToMaturity, + $bondPaymentFrequency + ] + ); } } } \ No newline at end of file diff --git a/src/Calculators/Factories/DebtAmortizatorFactory.php b/src/Calculators/Factories/DebtAmortizatorFactory.php index 7a3fd1b..191c0ac 100644 --- a/src/Calculators/Factories/DebtAmortizatorFactory.php +++ b/src/Calculators/Factories/DebtAmortizatorFactory.php @@ -20,11 +20,14 @@ class DebtAmortizatorFactory extends CalculatorFactoryAbstract { */ public function newYearlyDebtAmortization($debtPrincipal, $debtNoOfPeriods, $debtInterest) { - return new DebtAmortizator( - $debtPrincipal, - $debtNoOfPeriods, - TimeUtils::getDaysFromYears(1), - $debtInterest); + return $this->manufactureInstance( + [ + $debtPrincipal, + $debtNoOfPeriods, + TimeUtils::getDaysFromYears(1), + $debtInterest + ] + ); } /** @@ -35,11 +38,14 @@ public function newYearlyDebtAmortization($debtPrincipal, $debtNoOfPeriods, $deb */ public function newMonthlyDebtAmortization($debtPrincipal, $debtNoOfPeriods, $debtInterest) { - return new DebtAmortizator( - $debtPrincipal, - $debtNoOfPeriods, - TimeUtils::getDaysFromMonths(1), - $debtInterest); + return $this->manufactureInstance( + [ + $debtPrincipal, + $debtNoOfPeriods, + TimeUtils::getDaysFromMonths(1), + $debtInterest + ] + ); } /** @@ -50,11 +56,14 @@ public function newMonthlyDebtAmortization($debtPrincipal, $debtNoOfPeriods, $de */ public function newDailyDebtAmortization($debtPrincipal, $debtNoOfPeriods, $debtInterest) { - return new DebtAmortizator( - $debtPrincipal, - $debtNoOfPeriods, - 1, - $debtInterest); + return $this->manufactureInstance( + [ + $debtPrincipal, + $debtNoOfPeriods, + 1, + $debtInterest + ] + ); } /** @@ -65,11 +74,14 @@ public function newDailyDebtAmortization($debtPrincipal, $debtNoOfPeriods, $debt * @return DebtAmortizator */ public function newDebtAmortizationCustomPeriodLength($debtPrincipal, $debtNoOfPeriods, $debtInterest, $debtSinglePeriodLength) { - return new DebtAmortizator( - $debtPrincipal, - $debtNoOfPeriods, - $debtSinglePeriodLength, - $debtInterest); + return $this->manufactureInstance( + [ + $debtPrincipal, + $debtNoOfPeriods, + $debtSinglePeriodLength, + $debtInterest + ] + ); } } } \ No newline at end of file diff --git a/src/Calculators/Factories/StockDividendDiscountModelCalculatorFactory.php b/src/Calculators/Factories/StockDividendDiscountModelCalculatorFactory.php index 147d340..9bf05a9 100644 --- a/src/Calculators/Factories/StockDividendDiscountModelCalculatorFactory.php +++ b/src/Calculators/Factories/StockDividendDiscountModelCalculatorFactory.php @@ -11,7 +11,7 @@ * @package FinanCalc\Calculators\Factories */ class StockDividendDiscountModelCalculatorFactory extends CalculatorFactoryAbstract { - const MANUFACTURED_CLASS_NAME = 'FinanCalc\\Calculators\\BondYTMCalculator'; + const MANUFACTURED_CLASS_NAME = 'FinanCalc\\Calculators\\StockDividendDiscountModelCalculator'; /** * @param $stockVIR @@ -19,10 +19,12 @@ class StockDividendDiscountModelCalculatorFactory extends CalculatorFactoryAbstr * @return StockDividendDiscountModelCalculator */ public function newZeroGrowthDividendDiscountModel($stockVIR, $stockAnnualDividendValue) { - return new StockDividendDiscountModelCalculator( - new StockDDMTypes(StockDDMTypes::ZERO_GROWTH), - $stockVIR, - $stockAnnualDividendValue + return $this->manufactureInstance( + [ + new StockDDMTypes(StockDDMTypes::ZERO_GROWTH), + $stockVIR, + $stockAnnualDividendValue + ] ); } @@ -33,11 +35,13 @@ public function newZeroGrowthDividendDiscountModel($stockVIR, $stockAnnualDivide * @return StockDividendDiscountModelCalculator */ public function newMultipleGrowthDividendDiscountModel($stockVIR, $stockAnnualDividendValue, $stockAnnualDividendsGrowth) { - return new StockDividendDiscountModelCalculator( - new StockDDMTypes(StockDDMTypes::MULTIPLE_GROWTH), - $stockVIR, - $stockAnnualDividendValue, - $stockAnnualDividendsGrowth + return $this->manufactureInstance( + [ + new StockDDMTypes(StockDDMTypes::MULTIPLE_GROWTH), + $stockVIR, + $stockAnnualDividendValue, + $stockAnnualDividendsGrowth + ] ); } } diff --git a/src/Calculators/Factories/StockInvestmentRatiosCalculatorFactory.php b/src/Calculators/Factories/StockInvestmentRatiosCalculatorFactory.php index dfbff96..0b73bc2 100644 --- a/src/Calculators/Factories/StockInvestmentRatiosCalculatorFactory.php +++ b/src/Calculators/Factories/StockInvestmentRatiosCalculatorFactory.php @@ -19,10 +19,13 @@ class StockInvestmentRatiosCalculatorFactory extends CalculatorFactoryAbstract { * @return StockInvestmentRatiosCalculator */ public function newCustomStocks($totalDividends, $earningAfterTaxes, $noOfStocks) { - return new StockInvestmentRatiosCalculator( - $totalDividends, - $earningAfterTaxes, - $noOfStocks); + return $this->manufactureInstance( + [ + $totalDividends, + $earningAfterTaxes, + $noOfStocks + ] + ); } } } \ No newline at end of file diff --git a/src/Calculators/StockDividendDiscountModelCalculator.php b/src/Calculators/StockDividendDiscountModelCalculator.php index f6e6f5c..6ef484d 100644 --- a/src/Calculators/StockDividendDiscountModelCalculator.php +++ b/src/Calculators/StockDividendDiscountModelCalculator.php @@ -21,7 +21,7 @@ class StockDividendDiscountModelCalculator extends CalculatorAbstract { private $stockVIR; // absolute value of the stock's annual dividends private $stockAnnualDividendsValue; - // the rate by which the stock's annual dividends are annually multiplied (i.e., a decimal number between 0 and 1) + // the rate by which the stock's annual dividends grow annually (i.e., a decimal number between 0 and 1) // this value applies only to the multiple growth dividend discount model private $stockAnnualDividendsGrowth; diff --git a/src/FinanCalc.php b/src/FinanCalc.php index d7e8128..5a95621 100644 --- a/src/FinanCalc.php +++ b/src/FinanCalc.php @@ -29,6 +29,7 @@ */ namespace FinanCalc { use Exception; + use FinanCalc\Interfaces\Calculator\CalculatorFactoryAbstract; use FinanCalc\Utils\Config; use FinanCalc\Calculators\Factories; @@ -73,7 +74,7 @@ public static function getInstance() { */ /** - * @return array + * @return CalculatorFactoryAbstract[] */ public function getFactories() { return $this->factoryClasses; @@ -81,7 +82,7 @@ public function getFactories() { /** * @param $factoryClassName - * @return mixed + * @return CalculatorFactoryAbstract * @throws Exception */ public function getFactory($factoryClassName) { diff --git a/src/Interfaces/Calculator/CalculatorFactoryAbstract.php b/src/Interfaces/Calculator/CalculatorFactoryAbstract.php index b71aa64..8719553 100644 --- a/src/Interfaces/Calculator/CalculatorFactoryAbstract.php +++ b/src/Interfaces/Calculator/CalculatorFactoryAbstract.php @@ -1,6 +1,9 @@ newInstanceArgs($args); + } } } \ No newline at end of file