gpt4 book ai didi

PHP:相互使用的类

转载 作者:可可西里 更新时间:2023-10-31 23:33:23 24 4
gpt4 key购买 nike

我有父类 Color 和子类 ColorRGBA 和 ColorHSLA。在 Color 类中,我想使用这些子项的静态函数,但出现错误“找不到类‘Color’”。这是同样的问题http://forums.codeguru.com/showthread.php?t=469995但是 class Color; 似乎在 PHP 中不起作用。

颜色.php:

include_once 'ColorRGBA.php';
include_once 'ColorHSLA.php';

class Color{
public static function isValid(&$tokens, $i) {
return ColorRGBA::isValid($tokens, $i) || ColorHSLA::isValid($tokens, $i);
}
}

ColorHLSA.php 和类似的 ColorRGBA.php

include_once 'Color.php';

class ColorRGBA extends Color {
public static function isValid(&$t, &$i) {
...
}
}

我应该如何重建我的类层次结构或包含指令?还是有任何其他选项可以使我的代码正常工作?

最佳答案

是的,在 PHP 中没有像 C++ 中那样的“前向声明”。这就是为什么 class Color;在 PHP 中无效。

现在你为什么得到"Class 'Color' not found." ?问题是,这一行

class ColorRGBA extends Color

在该行之前执行:

class Color {

所以 Color确实没有定义。要解决此问题,您可以执行以下操作:

class Color{
public static function isValid(&$tokens, $i) {
include_once 'ColorRGBA.php';
include_once 'ColorHSLA.php';
return ColorRGBA::isValid($tokens, $i) || ColorHSLA::isValid($tokens, $i);
}
}

这是有效的,因为 Color类现在已完全定义并且 ColorRGBA/ColorHSLA仅在 isValid 时才定义类被调用。

你也可以输入 include_onceColor 的定义之后类。

关于PHP:相互使用的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10919605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com