处理命名空间实例的标量类型和返回类型声明的最佳方法是什么?
我对所有内容都使用命名空间类,并对将在文件中使用的所有类使用类顶部的“使用”别名。
这是一个不使用标量类型和返回类型声明的示例:
文件 1
use Model\ExampleA\ClassA;
use Model\ExampleB\ClassB;
$classA = new ClassA();
$classB = new ClassB();
$result = $classB->action($classA);
文件 2
namespace Model\ExampleB;
class ClassB
{
/**
* @param ClassA $classA The ClassA instance.
* @return ClassA Returns the ClassA instance.
*/
public function action($classA)
{
return $classA;
}
}
现在,如果使用标量类型和返回类型声明,file2 将改为:
namespace Model\ExampleB;
use Model\ExampleA\ClassA;
class ClassB
{
/**
* @param ClassA $classA The ClassA instance.
* @return ClassA Returns the ClassA instance.
*/
public function action(classA $classA) : classA
{
return $classA;
}
}
因此,如果对命名空间实例使用标量或返回类型声明,我必须在 file2 的顶部再次使用“use”别名,以使类型提示起作用。
我更喜欢将“对象”数据类型用于标量类型或返回类型用于命名空间实例,并将 @param 和 @return 数据类型保留在 docblock 中,如下所示:
namespace Model\ClassB;
class ClassB
{
/**
* @param ClassA $classA The ClassA instance.
* @return ClassA Returns the ClassA instance.
*/
public function action(object $classA) : object
{
return $classA;
}
}
这个可以吗?或者我的另一个例子是最好的方法吗?