<?php
//计算器示例
class calc
{
//方法:计算
public function calculate($num1,$num2,$operator)
{
//异常处理函数
try
{
//返回值
$result = 0;
//操作符号判断
switch ($operator)
{
//加法
case '+':
$result = $num1 + $num2;
break;
//减法
case '-':
$result = $num1 - $num2;
break;
//乘法
case '*':
$result = $num1 * $num2;
break;
//除法
case '/':
//余数为0,不能整除,抛出异常
if ($num2 == 0)
{
throw new Exception('chu shu bu neng wei 0');
}
$result = $num1 / $num2;
break;
//取余数
case '%':
$result = $num1 % $num2;
break;
}
//返回值
return $result;
}
//捕获异常
catch (Exception $e)
{
echo 'input wrong:'.$e->getMessage();
}
}
}
//类的实例化
$test = new calc();
echo '+ ='.$test->calculate(100,99,'+');
echo "<br>";
echo '- ='.$test->calculate(100,99,'-');
echo "<br>";
echo '* ='.$test->calculate(100,99,'*');
echo "<br>";
echo '/ ='.$test->calculate(100,99,'/');
echo "<br>";
echo '/ ='.$test->calculate(100,0,'/');
echo "<br>";
echo '% ='.$test->calculate(100,99,'%');
echo "<br>";
工厂模式:
echo "<hr>";
//接口
interface calc1
{
public function getValue($num1,$num2);
}
//加法,继承接口并实现
class math_add implements calc1
{
public function getValue($num1, $num2)
{
return $num1 + $num2;
}
}
//减法
class math_sub implements calc1
{
public function getValue($num1, $num2)
{
return $num1 - $num2;
}
}
//乘法
class math_mul implements calc1
{
public function getValue($num1, $num2)
{
return $num1 * $num2;
}
}
//除法
class math_div implements calc1
{
public function getValue($num1, $num2)
{
try
{
if($num2 == 0)
{
throw new Exception('chu shu bu meng wei 0');
}
else
{
return $num1 / $num2;
}
}
catch (Exception $e)
{
echo "wrong :".$e->getMessage();
}
}
}
//工厂类,静态方法创建对象
class factory1
{
public static function createObject($operator)
{
switch ($operator)
{
case '+':
return new math_add();
break;
case '-':
return new math_sub();
break;
case '*':
return new math_mul();
break;
case '/':
return new math_div();
break;
}
}
}
//创建加法类实例
$fac1 = factory1::createObject('+');
echo '+ ='.$fac1->getValue(100,99);
echo "<br>";
//创建减法类实例
$fac2 = factory1::createObject('-');
echo '- ='.$fac2->getValue(100,99);
echo "<br>";
//创建乘法类实例
$fac3 = factory1::createObject('*');
echo '* ='.$fac3->getValue(100,99);
echo "<br>";
//创建除法类实例
$fac4 = factory1::createObject('/');
echo '/ ='.$fac4->getValue(100,99);
echo "<br>";
//除数为0
$fac5 = factory1::createObject('/');
echo '+ ='.$fac5->getValue(100,0);
echo "<br>";