我是OO PHP的新手......我正在尝试创建一个名为MyClass
的PHP类,以及一些应该采用的方法:
我已经完成了1.和2.但是不知道如何处理异常,你需要包含它们?内部MyFunction
方法的isNumeric/isDefined
内部方法。你能帮忙解决这个问题。
我的剧本:
<?php
namespace Quotations;
class MyClass {
var $is_number;
var $is_defined;
private $number;
private $defined;
private function isNumeric($w, $c){
if(is_numeric($w) && is_numeric($c)){
$number = true;
}
else{
$number = false;
}
return $number;
}
private function isDefined($t, $f, $w, $c){
if(isset($t, $f, $w, $c)){
$defined = true;
}
else{
$defined = false;
}
return $defined;
}
function MyFunction($to, $from, $weight, $cube) {
try{
if(!$this -> isNumeric($weight, $cube)){
throw new InvalidArgumentException('Arguments are not numeric');
}
if(!$this -> isDefined($to, $from, $weight, $cube)){
throw new BadMethodCallException('Arguments are missing');
}
}catch(InvalidArgumentException $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
}catch(BadMethodCallException $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
?>
答案 0 :(得分:1)
我会建议这样的事情:
function MyFunction($to, $from, $weight, $cube) {
if(!$this -> isDefined($to, $from, $weight, $cube)){
throw new \BadMethodCallException('Arguments are missing');
}
if(!$this -> isNumeric($weight, $cube)){
throw new \InvalidArgumentException('Arguments are not numeric');
}
//do stuff
}
这就是你如何处理它:
try{
$MyClassObject->MyFunction($arg1, $arg2, $arg3, $arg4);
}catch(BadMethodCallException $e){
//handle missing arguments ...
}catch(InvalidArgumentException $e){
//handle invalid argumets ...
}
所以,这只是基本用法的一个例子。您可以根据需要随意调整它。
注意,如果在函数中缺少非可选参数,PHP将生成E_WARNING