有人可以解释使用Request和$ request的第三行。如果你能给我一个解释相同的链接,那会很棒吗?我只是想知道那里发生了什么。
<?php
class xyz {
public function foo(Request $request){
//some code
}
}
答案 0 :(得分:2)
类型提示:
<?php
// An example class
class MyClass
{
/**
* A test function
*
* First parameter must be an object of type OtherClass
*/
public function test(OtherClass $otherclass) {
echo $otherclass->var;
}
/**
* Another test function
*
* First parameter must be an array
*/
public function test_array(array $input_array) {
print_r($input_array);
}
}
// Another example class
class OtherClass {
public $var = 'Hello World';
}
如果参数不是指定类型,则抛出错误:
<?php
// An instance of each class
$myclass = new MyClass;
$otherclass = new OtherClass;
// Fatal Error: Argument 1 must be an object of class OtherClass
$myclass->test('hello');
// Fatal Error: Argument 1 must be an instance of OtherClass
$foo = new stdClass;
$myclass->test($foo);
// Fatal Error: Argument 1 must not be null
$myclass->test(null);
// Works: Prints Hello World
$myclass->test($otherclass);
// Fatal Error: Argument 1 must be an array
$myclass->test_array('a string');
// Works: Prints the array
$myclass->test_array(array('a', 'b', 'c'));
?>
答案 1 :(得分:2)
参数:
输入提示:
答案 2 :(得分:0)
将Request
类型的对象传递给函数foo
。
在名为foo
的私有变量中,函数$request
可用。
答案 3 :(得分:0)
第三行定义了一个名为foo的类方法,它可以获得类型为“Request”的$request
参数。
这是班级开发人员的安全措施。确定
<?php
class User
{
private $username;
public function get_username()
{
return $this->username;
}
}
class xyz()
{
public function foo(User $currentUser)
{
$currentUser->get_username();
}
}
$x = new xyz();
$u = new User();
$x->foo($u); // That will not produce any error because we pass an Object argument of type User
$name = "my_name";
$x->foo($name); // This will produce an error because we pass a wrong type of argument
?>
答案 4 :(得分:0)
这是type hint,告诉php期望有一个
的对象$request instanceof Request == true
请注意,这实际上不确保任何事情。如果$ request为null或其他对象,则很可能只会抛出可捕获致命错误,因此您必须测试有效值。