2012-05-13 17 views
2

我正在開發一個使用codeigniter框架的網站。爲了記錄它,我已經安裝了doxygen。Doxygen跳過文件與php __construct()

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
/** 
* @class 
* @brief The class brief 
*/ 
    class Catalogo extends CI_Controller {  
    public function __construct(){   
     parent::__construct(); 
     $this->load->model('catalogomodel'); 
     $this->load->library('img'); 
    } 
    public function foo(){ 
     ..some code.. 
    } 
/* End of file catalogo.php */ 
/* Location: ./application/controllers/catalogo.php */ 

這是被跳過的唯一文件,與笨通常結構中的其他文件記錄在案,因爲他們應該:當doxygen的符合文件結構如下奇怪的事情正在發生。

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
/** 
* @class 
* @brief The class brief 
*/ 
    class Catalogo extends CI_Controller { 
    public function index(){ 
     ...some code to load models, libraries and views ... 
    } 
    /* End of file catalogo.php */ 
    /* Location: ./application/controllers/catalogo.php */ 
+0

您是否在'__construct()'之前嘗試過docblock? –

回答

3

我不知道你是如何密切的例子提供符合您的實際應用中,但上述原示例代碼:

你的類的聲明似乎並沒有被關閉(缺少})。這將阻止doxygen解析類聲明,並且它將被跳過。添加關閉}允許doxygen完全解析類,它應該包含在文檔中,但是沒有文檔將出現在類或其成員函數中,並且__construct不會被列爲成員函數。

一旦做出改變,Doxygen的1.8.0報告兩個警告在處理內容:

catalogo.php:6: warning: Compound Catalogo is not documented. 
catalogo.php:13: warning: Member foo() (function) of class Catalogo is not documented. 

首先是關係到空@class標記。 Doxygen預計@class後面緊跟註釋適用的類名稱,並且通常在doxygen不位於它所描述的結構旁邊時使用。在這種情況下,@class可以被刪除,因爲Catalogo類聲明緊隨其後。或者,您也可以明確指定@class Catalogo。進行此更改將使第一條警告消失,並且將導致Catalogo的文檔出現在doxygen輸出中,但__construct仍將不存在,並且foo將不會鏈接到詳細說明。

爲了解決第二個警告,你需要爲foo提供文件,是這樣的:

/** 
* Documentation for foo. 
*/ 
public function foo(){ 
} 

這一變化將導致foo出現一個鏈接到它的詳細說明文檔。 __construct仍然不存在,但是添加類似文檔的:

/** 
* Documentation for __construct. 
*/ 
public function __construct() {   
} 

導致兩個功能出現與鏈接到他們的詳細說明。這一切都假定默認的doxygen配置(doxygen -g)和Doxygen 1.8.0。我測試過的最終代碼是:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
/** 
* @brief The class brief 
*/ 
class Catalogo extends CI_Controller { 
    /** 
    * Documentation for __construct. 
    */ 
    public function __construct(){   
     parent::__construct(); 
     $this->load->model('catalogomodel'); 
     $this->load->library('img'); 
    } 

    /** 
    * Documentation for foo. 
    */ 
    public function foo(){ 
     ..some code.. 
    } 
} 
/* End of file catalogo.php */ 
/* Location: ./application/controllers/catalogo.php */ 
+0

非常感謝DRH,使用你的代碼真的有效! –

+0

+1一個很好的答案。我被我自己的bug帶到了這裏,對於未來的用戶,我用'/ ***'開始了我的評論(我的IDE自動爲我完成了這個)。 – msanford