博客列表 >PHP-方法重载和静态方法重载-0904

PHP-方法重载和静态方法重载-0904

Bean_sproul
Bean_sproul原创
2018年09月12日 15:40:401110浏览

重载方法必须声明为public
重载分为:属性重载和方法重载
属性重载:__get();__set():__isset();__unset();
方法重载:__call();静态方法__callstatic();
使用方法__call($method.$arguments);//方法名,数组
使用方法__callstatic($method.$arguments)

实例

<?php 
//重载方法必须声明为public
//重载分为:属性重载和方法重载
//属性重载:__get();__set():__isset();__unset();
//方法重载:__call();静态方法__callstatic();
//使用方法__call($method.$arguments);
//使用方法__callstatic($method.$arguments)

echo '__call调用不可访问或不存在的方法时被调用<br>';
echo '__callStatic调用不可访问或不存在的静态方法时被调用<hr>';

class ClassTest
{
	
	public function __call($method,$arguments)  //创建一个不存在的方法
	{
       /*return $method; //方法名称
       return $arguments;//数组值*/
       $args =implode(',', $arguments);   //implode将数组中元素切割为字符串
       return '方法名:'.$method.'<br>参数:'.$args;
	}

	private function select($a)  //创建一个私有方法
	{
       return __METHOD__;
       return $this->$a;
	}


	public static function __callStatic($a,$b)  //创建一个静态的不存在的方法
	{
	   $args =implode(',', $b);   //implode将数组中元素切割为字符串
       return '方法名:'.$a.'<br>参数:'.$args;
    }
}

//实例化对象
$ClassTest = new ClassTest();

//输出一个不存在的方法
echo $ClassTest->show('南京','上海','北京').'<hr>';
//输出一个私有方法
echo $ClassTest->select('a','1','3').'<hr>';

//从外部访问一个不存在的静态方法
echo ClassTest::abc('1','2','3');



?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

 

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议