php魔术方法之__invoke

一、语法

__invoke ( $... = ? ) : mixed

  在 PHP 5.3.0 及以上版本时,当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。

二、示例

<?php

/**
 * 定义一个狗类
 */
class Cat {

	//定义一个属性
	private $name = null;

	// 构造函数
	function __construct(?string $name = null){

		if(is_null($this->name)){
			$this->setName($name);
		}
	}

	/**
	 * 输出名字
	 */
	public function getName(){
		echo "这是一只猫,名字叫{$this->name}。\n"."<br>";
	}

	/**
	 * 私有方法
	 */
	private function setName($name){
		$this->name = $name;
	}

	/**
	 * 当类被当做方法执行是
	 */
	function __invoke($age) {
        echo $this->name.'今年'.$age.'岁了。';
    }
}


//实例化
$Cat = new Cat('旺财');  // 输出  __construct   

$Cat->getName();  //输出:'这是一只猫,名字叫旺财。

$Cat(3);  // 输出 旺财今年3岁了

  

三、更多

想查看更多,请前往:https://www.php.net/manual/zh/language.oop5.magic.php#object.invoke

posted on 2021-04-09 14:56  narwhalYel  阅读(429)  评论(0)    收藏  举报