PHP:运行phing时只包含文件?

时间:2009-05-17 20:24:06

标签: include xdebug phing

我有以下文件夹结构:

/main
    /loader.php
    /build.xml
    /components
        /package1
            /class1.php
        /package2
            /class2.php
    /tests
        /package1
            /class1.test.php
        /package2
            /class2.test.php

当我运行Web应用程序时,我首先加载loader.php并通过调用Loader::load( 'package_name' )包含其他组件。然后包含所有必要的文件。这里的好处是我不需要在类文件中包含loader.php,因为我可以依赖于Loader的工作实例。

单元测试类通过显式包含所有必需类来模拟此行为。因此phing和PHPUnit也没有问题。

但现在我想用phing和Xdebug生成一份报道报告。这里的问题是phing似乎加载每个PHP文件来创建coverage数据库。不幸的是它停止了,因为它找不到PHP文件中使用的Loader类。

我可以轻松地为每个类文件添加include语句,但我想知道是否只有在代码覆盖率分析检查文件时才有包含文件的方法?

其他想法:我还可以以扫描单元测试目录的方式配置覆盖率分析,从而找到所有必需的包含。然后我需要过滤匹配类似/Test$/i左右的模式的类。可能的?

1 个答案:

答案 0 :(得分:1)

我找了类似的东西。

最后,我最终得到了以下更改。基本上你告诉php cli预装一个包含你的加载逻辑的php文件。

在我的cli的php.ini中,我设置了以下内容:

auto_prepend_file = autoload.php

我确保该文件位于我的包含路径(在我的情况下为/ usr / share / php)中,并在其中放入以下行(我使用的Zend Framework也在我的包含路径上):

require_once“Zend / Loader / Autoloader.php”; $ autoloader = Zend_Loader_Autoloader :: getInstance(); $ autoloader-> registerNamespace( '模型_');

现在,你可以做的是定义你的__autoload函数并定义需要自动加载的内容,但你明白了。

这是一个丑陋的黑客,但它为我完成了事情。

WKR 的Jeroen