Arv*_*res 1 php oop type-hinting laravel-5.2
我正在使用Laravel 5.2,我想创建一个方法,其中参数必须是Foo,Bar或Baz的实例.如果参数不是任何这些类的对象,则抛出错误.
App\Models\Foo;
App\Models\Bar;
App\Models\Baz;
public function someMethod(// what to type hint here??)
{
// if 1st argument passed to someMethod() is not an object of either class Foo, Bar, Baz then throw an error
}
Run Code Online (Sandbox Code Playgroud)
这该怎么做?
没有办法以你想要的方式提供多种类型的提示(除非他们根据Dekel的答案扩展/实现彼此).
您需要手动强制执行该类型,例如:
public function someMethod($object) {
if (!in_array(get_class($object), array('Foo', 'Bar', 'Baz'))) {
throw new Exception('ARGGH');
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过提供所需类型列表作为phpdoc提示来帮助最终用户:
/**
* Does some stuff
*
* @param Foo|Bar|Baz $object
* @throws Exception
*/
Run Code Online (Sandbox Code Playgroud)