php类方法中参数问题,参数怎么是一个类名 加上变量,怎么理解?

classTest{private$foo;publicfunction__construct($foo){$this->foo=$foo;}privatefunctio... class Test
{
private $foo;

public function __construct($foo)
{
$this->foo = $foo;
}

private function bar()
{
echo 'Accessed the private method.';
}

public function baz(Test $other)
{
// We can change the private property:
$other->foo = 'hello';
var_dump($other->foo);

// We can also call the private method:
$other->bar();
}
}

$test = new Test('test');

$test->baz(new Test('other'));
展开
 我来答
最近控喵星人
2018-04-01 · TA获得超过1561个赞
知道小有建树答主
回答量:23
采纳率:0%
帮助的人:3503
展开全部

PHP 5 可以使用类型约束。函数的参数可以指定只能为对象(在函数原型里面指定类的名字),PHP 5.1 之后也可以指定只能为数组。
注:PHP7之后可以指定int,string等。

代表方法baz()接收的参数是一个对象,并且指定必须是Test类实例化的对象。
比如在后面加如下代码就能正常输出:string(5) "hello"
12345

$a=new Test(111);$a->baz($a);

但是如果换成如下代码:

class B{}
$b=new B();
$a=new Test(111);
$a->baz($b);

就会报错:Catchable fatal error:  Argument 1 passed to Test::baz() must be an instance of Test, instance of B given
简单意思就是:传递参数必须是实例化Test,你传B的对象是不对的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式