在php oop过程中,这个代码块中发生了什么?
有人能解释一下第三行使用Request和$Request吗。如果你能给我提供一个有相同解释的链接,那就太好了?我只是想知道那里发生了什么在php oop过程中,这个代码块中发生了什么?,php,oop,type-hinting,Php,Oop,Type Hinting,有人能解释一下第三行使用Request和$Request吗。如果你能给我提供一个有相同解释的链接,那就太好了?我只是想知道那里发生了什么 <?php class xyz { public function foo(Request $request){ //some code } } 类型提示: 如果参数不是指定的类型,则会引发错误: <?php // An instance of each cl
<?php
class xyz {
public function foo(Request $request){
//some code
}
}
类型提示:
如果参数不是指定的类型,则会引发错误:
<?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'));
?>
论据:
键入提示:
请求类型的对象正在传递给函数foo
它在名为$request的私有变量中对函数foo可用。第三行定义了一个名为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
?>
这是一个,告诉php期望一个
$request instanceof Request == true
请注意,这实际上并不能保证任何事情。如果$request为null或其他对象,则很可能只会抛出一个可捕获的致命错误,因此您必须测试有效值。代码是从哪里获得的?
$request instanceof Request == true