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

Source for file htf_com_conf.phl

Documentation is available at htf_com_conf.phl

  1. <?php
  2. /**
  3.  * htf_com_conf.phl
  4.  *
  5.  * htf環境設定情報を保有するクラス
  6.  *
  7.  * @package   HtmlTemplateFramework
  8.  * @subpackage common
  9.  * @access     public
  10.  * @author    Yamauchi Shogo <htf@as-prj.com>
  11.  * @version   $Id: htf_com_conf.phl ,v 1.0 $;
  12.  ***/
  13. require_once("htf_com_define.inc");    //共通定数
  14. require_once("htf_com_func.inc");        //共通関数
  15.  
  16. /**
  17.  * htf環境設定情報を保有するクラス
  18.  * 
  19.  * コンストラクタに指定されたファイル名をサーチ・読み込みを行い、htfの環境設定情報の
  20.  * 各設定値を保有します。指定したファイル名は、以下の順序でサーチされます。<br>
  21.  * (1)現在の実行ディレクトリ<br>
  22.  * (2)実行ディレクトリから上位(ドキュメントルート・またはルートディレクトリまで)<br>
  23.  * (3)PHPに設定されたインクルードディレクトリ<br>
  24.  * 指定したファイルがみつからなかった場合には、初期値が設定されます。<br>
  25.  * <br>
  26.  * また、内部エンコード判別(internal_encoding_distinct)がonになっている場合や
  27.  * エンコード指定(internal_encoding_encode)が指定されていない場合には、
  28.  * PHPの設定値(mb_internal_encodingやmg_language)を参照して内部エンコード判別を行い、
  29.  * internal_encoding_encodeを設定します。(EUC-JPもしくはUTF-8のどちらかになります。)
  30.  *
  31.  * @access   public
  32.  * @author    Yamauchi Shogo <htf@as-prj.com>
  33.  ***/
  34. class htf_com_conf {
  35.  
  36.    /**
  37.     * htmlタグ・エレメントの大文字小文字出力設定値。
  38.     * 'lower'(小文字・デフォルト)もしくは'upper'(大文字)を設定します。
  39.     * @access public
  40.     * @var string 
  41.     */
  42.     var $itemcase_element;                    //htmlタグ・エレメントの大文字・小文字設定
  43.       /**
  44.     * htmlタグ・属性の大文字小文字出力設定値。
  45.     * 'lower'(小文字・デフォルト)もしくは'upper'(大文字)を設定します。
  46.     * @access public
  47.     * @var string 
  48.     */
  49.     var $itemcase_attribute;                //htmlタグ・属性の大文字・小文字設定
  50.       /**
  51.     * htfの内部エンコーディング判別方法設定値。
  52.     * 'off'(判別を行わない・デフォルト)もしくは'on'(判別を行う)を設定します。
  53.     * @access public
  54.     * @var string 
  55.     */
  56.     var $internal_encoding_distinct;        //内部エンコーディング判定方法
  57.       /**
  58.     * htfの内部エンコーディング文字列。
  59.     * 'EUC-JP'もしくは'UTF-8'を設定します(デフォルトは空文字で、htfではUTF-8と評価される)。
  60.     * @access public
  61.     * @var string 
  62.     */
  63.     var $internal_encoding_encode;            //内部エンコーディング文字列
  64.       /**
  65.     * htfで管理するイメージ格納パス(デフォルトは空文字)。
  66.     * ex)/htf/sample/images
  67.     * @access public
  68.     * @var string 
  69.     */
  70.     var $imagepath;                            //イメージ格納パス
  71.       /**
  72.     * htfで管理するCSSファイル格納パス(デフォルトは空文字)。
  73.     * ex)/htf/sample/css
  74.     * @access public
  75.     * @var string 
  76.     */
  77.     var $csspath;                            //CSS格納パス
  78.       /**
  79.     * htfで管理するJavaScriptファイル格納パス(デフォルトは空文字)。
  80.     * ex)/htf/sample/js
  81.     * @access public
  82.     * @var string 
  83.     */
  84.     var $jspath;                            //JavaScript格納パス
  85.       /**
  86.     * htfで管理するルートパス(デフォルトは空文字)。
  87.     * ex)/htf/sample
  88.     * @access public
  89.     * @var string 
  90.     */
  91.     var $rootpath;                            //ルートパス
  92.  
  93.     
  94.     /**
  95.      * 引数のxmlファイル名をサーチし、環境設定情報を取得します。
  96.      * 
  97.      * @access     public
  98.      * @param     string    $strfname    環境設定ファイル名(初期値は'htfconf.xml')
  99.      * @return    void 
  100.      ***/
  101.     function htf_com_conf($strfname=HTF_CONF_FNAME{
  102.         //プロパティ初期化
  103.         $this->itemcase_element = HTF_CASE_LOWER;            //初期値は小文字(エレメント)
  104.         $this->itemcase_attribute = HTF_CASE_LOWER;            //初期値は小文字(属性)
  105.         $this->internal_encoding_distinctHTF_CONF_OFF;    //初期値は判別オフ(内部エンコード判別)
  106.         $this->internal_encoding_encode"";                //初期値はなし(このままなら自動判別へ)
  107.         $this->imagepath = "";                                //初期値はなし
  108.         $this->csspath = "";                                //初期値はなし
  109.         $this->jspath = "";                                    //初期値はなし
  110.         $this->rootpath = "";                                //初期値はなし
  111.         
  112.         //htfconf.xmlのDOMオブジェクト&ルート取得
  113.         $strxmlpath htf_get_filepath(realpath('.')$strfname);
  114.         if (!htf_is_existsval($strxmlpath)) {
  115.             //見つからなかったらインクルードパスをサーチ
  116.             $strxmlpath htf_get_fileincludepath($strfname);
  117.             if (!htf_is_existsval($strxmlpath)) {
  118.                 return;
  119.             }
  120.         }
  121.         $this->objdom domxml_open_file($strxmlpath);
  122.         $objroot $this->objdom->document_element();
  123.         
  124.         //設定情報取得
  125.         $this->set_confvalue($objroot);
  126.         
  127.         //内部エンコード判別(自動判別指定の場合・指定エンコードが存在しない場合)
  128.         if (htf_comp_property($this->internal_encoding_distinctHTF_CONF_ON||
  129.             $this->internal_encoding_encode == ""{
  130.             $this->judge_internal_encoding();
  131.         }
  132.         return;
  133.     }
  134.     
  135.     /**
  136.      * 設定値取得
  137.      *
  138.      * 引数のDOMルートオブジェクトから、設定値を取得します。
  139.      *
  140.      * @access     private
  141.      * @param     DomElement    $objroot    htfconf.xmlのルート要素
  142.      * @return    void 
  143.      ***/
  144.     function set_confvalue($objroot=NULL{
  145.         
  146.         //配下の子ノード取得
  147.         if (!is_null($objroot)) {
  148.             $arrcnode $objroot->child_nodes();
  149.         else {
  150.             return;
  151.         }
  152.         
  153.         //特定要素のアトリビュート取得
  154.         for ($i=0$i<count($arrcnode$i++{
  155.             if ($arrcnode[$i]->node_type(!= XML_TEXT_NODE{
  156.                 if (htf_comp_xmlelementname($arrcnode[$i]->node_name()HTF_CONF_XML_ITEMCASE)) {
  157.                     //itemcase要素
  158.                     $arr_ic_attr $arrcnode[$i]->attributes();
  159.                     for($j=0$j<count($arr_ic_attr)$j++{
  160.                         if (htf_comp_xmlattrname($arr_ic_attr[$j]->nameHTF_ATTR_ITEMCASE_ELEMENT)) {
  161.                             //itemcase_element属性
  162.                             $this->itemcase_element = $arr_ic_attr[$j]->value;
  163.                         else if(htf_comp_xmlattrname($arr_ic_attr[$j]->nameHTF_ATTR_ITEMCASE_ATTRIBUTE)) {
  164.                             //itemcase_attribute属性
  165.                             $this->itemcase_attribute = $arr_ic_attr[$j]->value;
  166.                         }
  167.                     }
  168.                 else if (htf_comp_xmlelementname($arrcnode[$i]->node_name()HTF_CONF_XML_INTERNAL_ENCODING)) {
  169.                     //internal_encoding要素
  170.                     $arr_ie_attr $arrcnode[$i]->attributes();
  171.                     for($j=0$j<count($arr_ie_attr)$j++{
  172.                         if (htf_comp_xmlattrname($arr_ie_attr[$j]->nameHTF_ATTR_INTERNAL_ENCODING_DISTINCT)) {
  173.                             //internal_encoding_distinct属性
  174.                             $this->internal_encoding_distinct = $arr_ie_attr[$j]->value;
  175.                         else if(htf_comp_xmlattrname($arr_ie_attr[$j]->nameHTF_ATTR_INTERNAL_ENCODING_ENCODE)) {
  176.                             //internal_encoding_encode属性
  177.                             $this->internal_encoding_encode = $arr_ie_attr[$j]->value;
  178.                         }
  179.                     }
  180.                 else if (htf_comp_xmlelementname($arrcnode[$i]->node_name()HTF_CONF_XML_IMAGEPATH)) {
  181.                     //imagepath要素
  182.                     $arr_ie_attr $arrcnode[$i]->attributes();
  183.                     for($j=0$j<count($arr_ie_attr)$j++{
  184.                         if (htf_comp_xmlattrname($arr_ie_attr[$j]->nameHTF_ATTR_IMAGEPATH_PATH)) {
  185.                             //imagepath属性
  186.                             $this->imagepath = $arr_ie_attr[$j]->value;
  187.                         }
  188.                     }
  189.                 else if (htf_comp_xmlelementname($arrcnode[$i]->node_name()HTF_CONF_XML_CSSPATH)) {
  190.                     //csspath要素
  191.                     $arr_ie_attr $arrcnode[$i]->attributes();
  192.                     for($j=0$j<count($arr_ie_attr)$j++{
  193.                         if (htf_comp_xmlattrname($arr_ie_attr[$j]->nameHTF_ATTR_CSSPATH_PATH)) {
  194.                             //csspath属性
  195.                             $this->csspath = $arr_ie_attr[$j]->value;
  196.                         }
  197.                     }
  198.                 else if (htf_comp_xmlelementname($arrcnode[$i]->node_name()HTF_CONF_XML_JSPATH)) {
  199.                     //jspath要素
  200.                     $arr_ie_attr $arrcnode[$i]->attributes();
  201.                     for($j=0$j<count($arr_ie_attr)$j++{
  202.                         if (htf_comp_xmlattrname($arr_ie_attr[$j]->nameHTF_ATTR_JSPATH_PATH)) {
  203.                             //jspath属性
  204.                             $this->jspath = $arr_ie_attr[$j]->value;
  205.                         }
  206.                     }
  207.                 else if (htf_comp_xmlelementname($arrcnode[$i]->node_name()HTF_CONF_XML_ROOTPATH)) {
  208.                     //rootpath要素
  209.                     $arr_ie_attr $arrcnode[$i]->attributes();
  210.                     for($j=0$j<count($arr_ie_attr)$j++{
  211.                         if (htf_comp_xmlattrname($arr_ie_attr[$j]->nameHTF_ATTR_ROOTPATH_PATH)) {
  212.                             //rootpath属性
  213.                             $this->rootpath = $arr_ie_attr[$j]->value;
  214.                         }
  215.                     }
  216.                 }
  217.             }
  218.         }
  219.         return;
  220.     }
  221.     
  222.     /**
  223.      * 内部エンコード判別
  224.      *
  225.      * 現在のPHP上の設定値から、使用する内部エンコードを判別し、設定します。
  226.      *
  227.      * @access     private
  228.      * @return    String 
  229.      ***/
  230.     function judge_internal_encoding({
  231.         if (!strcasecmp(mb_internal_encoding()HTF_ENCODE_EUC)) {
  232.             //mbstring.internal_encodingがEUC-JPの場合
  233.             $this->internal_encoding_encode = HTF_ENCODE_EUC;
  234.         else if(!strcasecmp(mb_internal_encoding(),HTF_ENCODE_UTF8)) {
  235.             //mbstring.internal_encodingがUTF-8の場合
  236.             $this->internal_encoding_encode = HTF_ENCODE_UTF8;
  237.         else if(!strcasecmp(mb_language(),'Japanese')) {
  238.             //mbstring.languageがjapaneseの場合
  239.             $this->internal_encoding_encode = HTF_ENCODE_EUC;
  240.         else if(!strcasecmp(mb_language(),'ja')) {
  241.             //mbstring.languageがjaの場合
  242.             $this->internal_encoding_encode = HTF_ENCODE_EUC;
  243.         else if(!strcasecmp(mb_language(),'uni')) {
  244.             //mbstring.languageがuniの場合
  245.             $this->internal_encoding_encode = HTF_ENCODE_UTF8;
  246.         else if(!strcasecmp(mb_language(),'neutral')) {
  247.             //mbstring.languageがneutralの場合
  248.             $this->internal_encoding_encode = HTF_ENCODE_UTF8;
  249.         else {
  250.             //それ以外の場合はUTF-8
  251.             $this->internal_encoding_encode = HTF_ENCODE_UTF8;
  252.         }
  253.         return;
  254.     }
  255. }
  256. ?>

Documentation generated on Tue, 19 Sep 2006 06:20:29 +0900 by phpDocumentor 1.3.0