以下不属于PHP的魔术方法是,PHP中魔术方法的作用是什么?

其实还是为了更好的支持面向对象,下面是一个例子。。。

class Tools {

/**

* 利用魔术方法__call实现伪重载。。。

* @return [type] [description]

*/

public function __call($name, $args) {

if ($name === "sum") {

switch (count($args)) {

case 2:

//求和:两个数

return $this->sum2($args[0], $args[1]);

break;

case 3:

//求和:三个数

return $this->sum3($args[0], $args[1], $args[2]);

break;

}

}

}

/**

* 利用魔术方法__callStatic实现伪重载。。。

* @return [type] [description]

*/

public static function __callStatic($name, $args) {

if ($name === "area") {

switch (count($args)) {

case 1:

//计算圆的面积

return self::areaCircle($args[0]);

break;

case 2:

//计算矩形的面积

return self::areaRectangle($args[0], $args[1]);

break;

}

}

}

/**

* 计算圆的面积

* @param [type] $r [description]

* @return [type] [description]

*/

public static function areaCircle($r) {

return pi() * $r * $r;

}

/**

* 计算矩形的面积

* @param [type] $length [description]

* @param [type] $width [description]

* @return [type] [description]

*/

public static function areaRectangle($length, $width) {

return $length * $width;

}

/**

* 求和:两个数

* @param [type] $num1 [description]

* @param [type] $num2 [description]

* @return [type] [description]

*/

public function sum2($num1, $num2) {

return $num1 + $num2;

}

/**

* 求和:三个数

* @param [type] $length [description]

* @param [type] $width [description]

* @return [type] [description]

*/

public function sum3($num1, $num2, $num3) {

return $num1 + $num2 + $num3;

}

}

//测试开始

echo Tools::area(2) . "
";

echo Tools::area(2, 4) . "
";

$tools = new Tools();

echo $tools->sum(2, 3) . "
";

echo $tools->sum(2, 3, 4) . "
";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值