2014-06-08 78 views
0

我是一般的PHP新手。我一直在搞這個代碼,直到我想在一個集合中執行這個函數,而不必設置和添加sub,div,mult函數。我該如何着手設置兩個數字集的變量運算符?給操作員設置一個變量然後執行它

示例僞代碼:

<?php 
$Num1 = 10; 
$Num2 = 5; 
$operation = /; 
$Sum = $Num1 $operation $Num2; 
return $Sum; 

或者類似的東西:

<?php 
// creating Class "Math" 
class math { 
    //Executing the function 
    function exec($info = array()) { 
     return $info['num1'] $info['operation'] $info['num2']; 
    } 
} 

// Set info 
$info = array(
    'num1' => 10, 
    'num2' => 5, 
    'operation' => '/' 
); 

//execute the OOP 
$math = new math; 
echo $math->exec($info); 
+0

你不能...使用開關或功能。 – Zerquix18

回答

1

你所要求的是被稱爲Strategy Pattern。要做到這一點

的一種方式,然後使用示例代碼來定義你的函數

$multiply = function($operand0, $operand1) { 
    return $operand0*$operand1; 
}; 

$add = function($operand0, $operand1) { 
    return $operand0+$operand1; 
}; 

class math { 
    //Executing the function 
    function exec($info = array()) { 
     return $info['operation']($info['num1'], $info['num2']); 
    } 
} 

// Set info 
$info = array(
    'num1' => 10, 
    'num2' => 5, 
    'operation' => $add 
); 

//execute the OOP 
$math = new math; 
echo $math->exec($info); //will print 15 
+0

'返回$ operand0 * operand1;'和'返回$ operand0 + operand1;'將得到語法錯誤。 – Zerquix18

+0

謝謝Zerquix,它現在已經修復。 –

+0

非常好,謝謝你的幫助! – Philslair

相關問題