PHP - 如何在使用类型提示构造函数时避免使用扩展类?

时间:2017-01-12 15:39:03

标签: php

我想避免为扩展类键入use语句。看起来它应该是多余的,因为父类知道类型提示的类型?

例如,我有一个父类

/* parent.php */
<?php
namespace App\ParentClass;

use App\User;
use App\Request;

class ParentClass {
    public function __construct(
        User $user,
        Request $request
    )
    {
        // do something
    }
}

和一个儿童班

/* parent.php */
<?php
namespace App\ChildClass;

use App\ParentClass\ParentClass;

// HOW CAN I ELIMINATE HAVING TO TYPE THE use STATEMENTS HERE?
use App\User;
use App\Request;

class ChildClass extends ParentClass 
{
    public function __construct(
        User $user,
        Request $request
    )
    {
        // do something
    }
}

2 个答案:

答案 0 :(得分:2)

扩展课程没有办法知道&#34;任意参数的命名空间,因为:

  1. 您可以在不同的名称空间中使用相同名称的类(首先是名称空间的概念)

  2. 命名空间中的代码可以使用其他命名空间中的对象

  3. 子类构造函数可以具有与父构造函数完全不同的参数。

答案 1 :(得分:1)

你不能省略这样的使用条款,
因为你在构造函数中使用了下面的I420User类,所以php需要知道这些类。