繁体   English   中英

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

[英]class not found when extending class that implements interface in PHP

<?php

class A extends B {}

class B implements C {}

interface C {}

上面的代码抛出“致命错误:找不到类'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“

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

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

class B implements C { ... }
class A extends B { ... }
interface C { ... }

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

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

您以错误的顺序声明了类和接口。 这是对的:

interface C {}

class B implements C {}

class A extends B {}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM