2012-05-13 13 views
2

私はcodeigniterフレームワークを使ってWebサイトを開発しています。それを文書化するために、私は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 */ 

これはスキップされているファイルだけで、CodeIgniterの中に通常の構造を持つ他のファイルは、彼らが必要として文書化されています: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は、2回の警告を報告:

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が記述されているコンストラクトの横にdoxygenがない場合に通常使用されます。この場合、@classは、すぐ後にCatalogoクラス宣言があるため、削除することができます。または、@class Catalogoを明示的に指定することもできます。この変更を行うと、最初の警告が消え、__constructはまだ存在しません。fooは詳細な説明にリンクされません。この変更はfooは、その詳細な説明へのリンクをドキュメントに表示される場合があります

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

2つ目の警告に対処するために、あなたは、 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すばらしい答えです。私は私自身のバグによってここに導かれました。これは、将来のユーザーのために、私が '/ ***'で私のコメントを始めたということでした(私のIDEはそれを自動で完了します)。 – msanford

関連する問題