HtmlTemplateFramework
[ class tree: HtmlTemplateFramework ] [ index: HtmlTemplateFramework ] [ all elements ]

Source for file htf_tag_element.phl

Documentation is available at htf_tag_element.phl

  1. <?php
  2. /**
  3.  * htf_tag_elementクラス
  4.  *
  5.  * htmlタグ要素情報を保有・生成するクラス
  6.  *
  7.  * @package HtmlTemplateFramework
  8.  * @subpackage htmltagbase
  9.  * @access  public
  10.  * @author    Yamauchi Shogo <htf@as-prj.com>
  11.  * @version $Id: htf_tag_element.phl ,v 1.0 $
  12.  ***/
  13. require_once("htf_com_define.inc");        //共通定義
  14. require_once("htf_com_func.inc");            //共通関数
  15. require_once("htf_tag_attribute.phl");        //タグ属性クラス
  16.  
  17. /**
  18.  * htmlタグ要素情報を保有・生成するクラス
  19.  * 
  20.  * htmlタグの要素情報を保有し、保有している内容でhtmlタグ記述を生成します。
  21.  * 以下の方法でhtmlタグの取得・出力が可能です。<br>
  22.  * (1)get_htmltagメソッドでタグ文字列を取得→print文で出力<br>
  23.  * (2)print_htmltagメソッドで直接出力<br>
  24.  * (3)get_starttagメソッド・get_endtagメソッド・get_contentsメソッドでそれぞれを分割取得してコントロールする<br>
  25.  *
  26.  * @access  public
  27.  * @author    Yamauchi Shogo <htf@as-prj.com>
  28.  ***/
  29. class htf_tag_element {
  30.    /**
  31.     * html要素名(デフォルトは空文字)
  32.     * 
  33.     * @access public
  34.     * @var string 
  35.     */
  36.     var $name;            //要素名(タグ名)
  37.       /**
  38.     * アトリビュートオブジェクト配列(デフォルトは配列初期値)
  39.     * 
  40.     * @access public
  41.     * @var array 
  42.     */
  43.     var $attributes;
  44.    /**
  45.     * 要素内容配列(デフォルトは配列初期値)
  46.     * 
  47.     * @access public
  48.     * @var array 
  49.     */
  50.     var $contents;        //要素内容
  51.       /**
  52.     * 閉じタグ要・不要フラグ
  53.     * 
  54.     * true:閉じタグが必要(デフォルト)<br>
  55.     * false:閉じタグ不要<br>
  56.     * 
  57.     * @access public
  58.     * @var bool 
  59.     */
  60.     var $close_flg;        //閉じタグの要・不要
  61.       /**
  62.     * HTML記述を出力する場合の大文字・小文字出力設定
  63.     * 
  64.     * 'upper':大文字で出力<br>
  65.     * 'lower':小文字で出力<br>
  66.     * 空文字 :設定値そのまま出力(デフォルト)<br>
  67.     * 
  68.     * @access public
  69.     * @var string 
  70.     */
  71.     var $case;            //エレメントの大文字・小文字指定
  72.  
  73.     
  74.     /**
  75.      * コンストラクタ
  76.      *
  77.      * 引数のエレメント名・閉じタグ要不要フラグ・出力指定から、htf_tag_elementクラスを生成します。
  78.      *
  79.      * @access public
  80.      * @param     string    $strname        htmlタグのエレメント名(デフォルトは指定なし)
  81.      * @param     bool      $blclose        閉じタグ要不要フラグ(デフォルトはTRUE 出力あり)
  82.      * @param     string    $strcase        大文字・小文字出力(デフォルトは指定なし そのまま出力)
  83.      * @return    void 
  84.      ***/
  85.     function htf_tag_element($strname="",
  86.                              $blclose=TRUE,
  87.                              $strcase=""{
  88.         //属性配列作成
  89.         $this->attributes = array();
  90.         //要素内容配列作成
  91.         $this->contents = array();
  92.         //要素名設定
  93.         $this->name = $strname;
  94.         //クローズタグの要・不要
  95.         $this->close_flg = $blclose;
  96.         //要素名の大文字・小文字設定
  97.         $this->case = $strcase;
  98.         return;
  99.     }
  100.  
  101.     /**
  102.      * 引数指定内容で属性内容を追加します。
  103.      *
  104.      * @access public
  105.      * @param     string    $strattr    属性名
  106.      * @param     string    $strvalue   属性値(デフォルトは空文字)
  107.      * @return    int       成功時:追加後のattributes要素数 失敗時:-1
  108.      ***/
  109.     function add_attribute($strattr$strvalue=""$strcase=""{
  110.         if(htf_is_existsval($strattr)) {
  111.             $objattrnew htf_tag_attribute($strattr$strvalue$strcase);
  112.             array_push($this->attributes$objattr);
  113.             return count($this->attributes);
  114.         else {
  115.             return -1;
  116.         }
  117.     }
  118.  
  119.     /**
  120.      * 引数指定内容で要素内容を追加します。
  121.      * 追加する要素は以下の内容である必要があります。<br>
  122.      * (1)string文字列<br>
  123.      * (2)htf_tag_elementオブジェクトまたは派生オブジェクト<br>
  124.      * (3)get_htmltagメソッド・print_htmltagメソッドを実装しているオブジェクト<br>
  125.      * <br>
  126.      * 上記でない場合には、get_htmltagメソッド・print_htmltagメソッドが
  127.      * 正しく動作しません。また、(3)の場合も、実装はget_htmltagやprint_htmltagの
  128.      * 仕様と合致する必要があります。
  129.      *
  130.      * @access public
  131.      * @param     mixed    $objadd    追加する要素をあらわす文字列あるいはオブジェクト
  132.      * @return    int      成功時:追加後のcontents要素数 失敗時:-1
  133.      ***/
  134.     function add_content($objadd{
  135.         if(htf_is_existsval($objadd)) {
  136.             array_push($this->contents$objadd);
  137.             return count($this->contents);
  138.         else {
  139.             return -1;
  140.         }
  141.     }
  142.  
  143.     /**
  144.      * htmlタグを文字列として取得します。
  145.      *
  146.      * @access public
  147.      * @return    string  htmlタグ文字列
  148.      ***/
  149.     function get_htmltag({
  150.         //開始タグ生成
  151.         $retstr htf_add_cr($this->get_starttag());
  152.         if (htf_is_existsval($retstr)) {
  153.             //要素内容タグを作成
  154.             $retstr.=$this->get_contents();
  155.             //閉じタグ
  156.             if ($this->close_flg{
  157.                 //閉じタグ
  158.                 $retstr.=htf_add_cr($this->get_endtag());
  159.             }
  160.             return $retstr;
  161.         else {
  162.             return "";
  163.         }
  164.     }
  165.  
  166.     /**
  167.      * htmlタグをprint文で出力します。
  168.      *
  169.      * @access public
  170.      * @return  void 
  171.      ***/
  172.     function print_htmltag({
  173.         //開始タグ生成
  174.         if (htf_is_existsval($this->name)) {
  175.             $outstr htf_add_cr($this->get_starttag());
  176.             print($outstr);
  177.             //要素内容タグを作成
  178.             for ($i=0$i<count($this->contents)$i++{
  179.                 if (htf_is_existsval($this->contents[$i])) {
  180.                     if (is_object($this->contents[$i])) {
  181.                         //オブジェクトの場合はprint_htmltagメソッドを呼ぶ
  182.                         $this->contents[$i]->print_htmltag();
  183.                     else {
  184.                         //他の場合(文字・数値など)はそのまま
  185.                         $constr htf_add_cr($this->contents[$i]);
  186.                         print($constr);
  187.                     }
  188.                 }
  189.             }
  190.             //閉じタグ
  191.             if ($this->close_flg{
  192.                 //閉じタグ
  193.                 $outstr=htf_add_cr($this->get_endtag());
  194.                 print($outstr);
  195.             }
  196.         }
  197.         return;
  198.     }
  199.     
  200.     /**
  201.      * html開始タグを文字列として取得します。
  202.      *
  203.      * @access public
  204.      * @return    string  html開始タグ記述
  205.      ***/
  206.     function get_starttag({
  207.         $retstr="";
  208.         $elemname=$this->get_element_name();
  209.         if (htf_is_existsval($elemname)) {
  210.             $retstr '<'.$elemname;
  211.             for ($i=0$i<count($this->attributes;$i++{
  212.                 $strattr=$this->attributes[$i]->get_description();
  213.                 if (htf_is_existsval($strattr)) {
  214.                     $retstr.= ' '.$strattr;
  215.                 }
  216.             }
  217.             $retstr.='>';
  218.         }
  219.         return $retstr;
  220.     }
  221.  
  222.     /**
  223.      * 全要素内容を文字列として取得します。
  224.      *
  225.      * @access public
  226.      * @return    string  全要素内容のhtmlタグ
  227.      ***/
  228.     function get_contents({
  229.         //要素内容タグを作成
  230.         $retstr "";
  231.         for ($i=0$i<count($this->contents)$i++{
  232.             $retstr.=$this->get_content($i);
  233.         }
  234.         return $retstr;
  235.     }
  236.  
  237.     /**
  238.      * html終了タグを文字列として取得します。
  239.      *
  240.      * @access public
  241.      * @return    string  html終了タグ記述
  242.      ***/
  243.     function get_endtag({
  244.         $retstr="";
  245.         $elemname $this->get_element_name();
  246.         if (htf_is_existsval($elemname)) {
  247.             $retstr '</'.$elemname.'>';
  248.         }
  249.         return $retstr;
  250.     }
  251.  
  252.     /**
  253.      * 要素番号を指定し、指定要素内容のタグを取得します。
  254.      *
  255.      * @access    private
  256.      * @param      int     $itemno 指定要素番号
  257.      * @return   string  指定要素内容のhtmlタグ
  258.      ***/
  259.     function get_content($itemno{
  260.         //要素内容タグを作成
  261.         if (htf_is_existsval($this->contents[$itemno])) {
  262.             if (is_object($this->contents[$itemno])) {
  263.                 //オブジェクトの場合はget_htmltagメソッドを呼ぶ
  264.                 $constr $this->contents[$itemno]->get_htmltag();
  265.             else {
  266.                 //他の場合(文字・数値など)はそのまま
  267.                 $constr htf_add_cr($this->contents[$itemno]);
  268.             }
  269.             return $constr;
  270.         }
  271.     }
  272.  
  273.     /**
  274.      * 大文字・小文字を判別し、要素名を取得します。
  275.      *
  276.      * @access     private
  277.      * @return    string  要素名
  278.      ***/
  279.     function get_element_name({
  280.         $retstr="";
  281.         if (htf_comp_property($this->caseHTF_CASE_LOWER)) {
  282.             //小文字に変換して出力
  283.             $retstr=strtolower($this->name);
  284.         else if(htf_comp_property($this->caseHTF_CASE_UPPER)) {
  285.             //大文字に変換して出力
  286.             $retstr=strtoupper($this->name);
  287.         else {
  288.             //そのまま出力
  289.             $retstr=$this->name;
  290.         }
  291.         return $retstr;
  292.     }
  293. }
  294.  
  295. ?>

Documentation generated on Tue, 19 Sep 2006 06:21:18 +0900 by phpDocumentor 1.3.0