扩展在PHP中实现接口的类时找不到该类

Erm*_*aev 4 php

<?php

class A extends B {}

class B implements C {}

interface C {}
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出“严重错误:未找到类'B'” ...这是一个PHP错误吗?要么?

环境:“带有Suhosin-Patch的PHP 5.3.6-13ubuntu3.2(cli)(内置:2011年10月13日23:19:13)版权所有(c)1997-2011 PHP Group Zend Engine v2.3.0,版权所有(c) 1998-2011 Zend Technologies with Xdebug v2.1.0,版权所有(c)2002-2010,作者Derick Rethans“

Far*_*ray 5

您在类定义的顺序上遇到了麻烦。只要接口在同一个文件中定义,就可以在任何地方声明-但是必须定义类,然后才能对其进行扩展。

以下是PHP中完全有效的顺序:

class B implements C { ... }
class A extends B { ... }
interface C { ... }
Run Code Online (Sandbox Code Playgroud)

PHP5文档中一个封闭的bug要求澄清

一个类似问题的答案(PHP中类定义的顺序重要吗?)提到了Autoloading。如果您使用多个文件,则可能需要调查一下。