我的意思是如果用$request
调用它不是sfWebRequest
的实例,它会是致命的,还是只是警告?
class jobActions extends sfActions
{
public function executeIndex(sfWebRequest $request)
{
$this->jobeet_job_list = Doctrine::getTable('JobeetJob')
->createQuery('a')
->execute();
}
// ...
}
答案 0 :(得分:5)
请参阅TypeHinting in the PHP Manual
一章如果$request
不是sfWebRequest
实例或的子类或实现此名称的interface,则该方法将提出catchable fatal error。如果未处理错误,脚本执行将终止。
实施例
class A {}
class B extends A {}
class C {}
function foo(A $obj) {}
foo(new A);
foo(new B);
foo(new C); // will raise an error and terminate script
使用接口
interface A {}
class B implements A {}
class C {}
function foo(A $obj) {}
foo(new B);
foo(new C); // will raise an error and terminate script
答案 1 :(得分:1)
这将是一个致命的致命错误。
以下是一个例子:
class MyObj {}
function act(MyObj $o)
{
echo "ok\n";
}
function handle_errors($errno, $str, $file, $line, $context)
{
echo "Caught error " . $errno . "\n";
}
set_error_handler('handle_errors');
act(new stdClass());
/* Prints
*
* Caught error 4096
* ok
*/
如果没有set_error_handler
调用,代码将失败并显示错误:
Catchable fatal error: Argument 1 passed to act() must be an instance of MyObj,
instance of stdClass given, called in /home/test/t.php on line 16 and defined in
/home/test/t.php on line 4