Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php oop过程中,这个代码块中发生了什么?_Php_Oop_Type Hinting - Fatal编程技术网

在php oop过程中,这个代码块中发生了什么?

在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

有人能解释一下第三行使用Request和$Request吗。如果你能给我提供一个有相同解释的链接,那就太好了?我只是想知道那里发生了什么

    <?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