【发布时间】:2017-09-16 06:56:38
【问题描述】:
我有一个使用 classpreloader 和一些自定义代码创建的文件,这些代码将一堆类文件压缩成一个文件以进行分发:
根据 travis 的说法,除了夜间之外,这一切都失败了,并出现错误:
致命错误:第 315 行 /home/travis/build/jnvsor/kint/build/kint.php 中的未知类 Kint_Renderer_Text
正如您在第 315 行看到的那样,class Kint_Renderer_Plain extends Kint_Renderer_Text 在文件后面的第 418 行使用class Kint_Renderer_Text extends Kint_Renderer 定义。
人们会假设这意味着单个文件中的类顺序很重要。
但是当我在构建发布文件之前sort()源文件时,travis 说一切都很顺利,尽管新文件也有类似的情况:
例如,class Kint_Object_Closure extends Kint_Object_Instance 在第 1249 行,class Kint_Object_Instance extends Kint_Object 在第 1352 行
那么问题就变成了:PHP 中类的排序要求到底是什么?
【问题讨论】:
-
据我所知,您的第一个 PHP 文件在
class Kint_Renderer_Text extends Kint_Renderer之前有class Kint_Renderer_Plain extends Kint_Renderer_Text,而您的第二个 PHP 文件在class Kint_Object_Closure extends Kint_Object_Instance之前有class Kint_Object_Instance extends Kint_Object。所以看起来第二个文件中的顺序确实发生了变化。话虽如此,请参阅stackoverflow.com/questions/8337286/… 以获得更好的解释。长话短说,是的,顺序确实很重要。 -
不,第二个在
Kint_Object_Instance定义之前有Kint_Object_Closure定义。这就是为什么它很奇怪。而且那里没有接口,所以它不能与那个问题重复.. -
“将一堆类文件压缩成一个文件进行分发” 不要重新发明轮子,使用phar。
标签: php