2009-05-17 133 views
0

我有以下文件夾結構:PHP:運行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文件來創建覆蓋數據庫。不幸的是,它停止了,因爲它找不到在PHP文件中使用的Loader類。

我可以很容易地爲每個類文件添加include語句,但是我不知道是否有一種方法只有在代碼覆蓋率分析檢查文件時才包含文件?

其他想法:我也可以配置覆蓋率分析的方式,它掃描單元測試目錄,因此找到所有需要包括。然後我需要過濾類似/Test$/i等模式的類。可能?

回答

1

我在找年齡相似的東西。

最後我結束了下面的修改。基本上你告訴php cli預先安裝一個包含你的加載邏輯的php文件。

在我的CLI的php.ini文件我已經設置如下:

的auto_prepend_file = autoload.php

我確信,該​​文件是在我的include路徑(在/ usr /共享/ PHP中我的情況),並把下面的行(我使用Zend框架,這也是我的包含路徑):

require_once「Zend/Loader/Autoloader.php」; $ autoloader = Zend_Loader_Autoloader :: getInstance(); $ autoloader-> registerNamespace('Model_');

現在,你可以做的是定義你的__autoload函數並定義需要自動加載的東西,但是你明白了。

這是一個醜陋的黑客,但它爲我完成了一些事情。

Wkr Jeroen