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')); 展开
{
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')); 展开
1个回答
展开全部
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的对象是不对的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询