HtmlTemplateFramework
[
class tree: HtmlTemplateFramework
] [
index: HtmlTemplateFramework
] [
all elements
]
Packages:
HtmlTemplateFramework
Source for file htf_tag_element.phl
Documentation is available at
htf_tag_element.phl
<?php
/**
* htf_tag_elementクラス
*
* htmlタグ要素情報を保有・生成するクラス
*
*
@package
HtmlTemplateFramework
*
@subpackage
htmltagbase
*
@access
public
*
@author
Yamauchi Shogo <htf@as-prj.com>
*
@version
$Id: htf_tag_element.phl ,v 1.0 $
***/
require_once
(
"htf_com_define.inc"
)
;
//共通定義
require_once
(
"htf_com_func.inc"
)
;
//共通関数
require_once
(
"htf_tag_attribute.phl"
)
;
//タグ属性クラス
/**
* htmlタグ要素情報を保有・生成するクラス
*
* htmlタグの要素情報を保有し、保有している内容でhtmlタグ記述を生成します。
* 以下の方法でhtmlタグの取得・出力が可能です。<br>
* (1)get_htmltagメソッドでタグ文字列を取得→print文で出力<br>
* (2)print_htmltagメソッドで直接出力<br>
* (3)get_starttagメソッド・get_endtagメソッド・get_contentsメソッドでそれぞれを分割取得してコントロールする<br>
*
*
@access
public
*
@author
Yamauchi Shogo <htf@as-prj.com>
***/
class
htf_tag_element
{
/**
* html要素名(デフォルトは空文字)
*
*
@access
public
*
@var
string
*/
var
$name
;
//要素名(タグ名)
/**
* アトリビュートオブジェクト配列(デフォルトは配列初期値)
*
*
@access
public
*
@var
array
*/
var
$attributes
;
/**
* 要素内容配列(デフォルトは配列初期値)
*
*
@access
public
*
@var
array
*/
var
$contents
;
//要素内容
/**
* 閉じタグ要・不要フラグ
*
* true:閉じタグが必要(デフォルト)<br>
* false:閉じタグ不要<br>
*
*
@access
public
*
@var
bool
*/
var
$close_flg
;
//閉じタグの要・不要
/**
* HTML記述を出力する場合の大文字・小文字出力設定
*
* 'upper':大文字で出力<br>
* 'lower':小文字で出力<br>
* 空文字 :設定値そのまま出力(デフォルト)<br>
*
*
@access
public
*
@var
string
*/
var
$case
;
//エレメントの大文字・小文字指定
/**
* コンストラクタ
*
* 引数のエレメント名・閉じタグ要不要フラグ・出力指定から、htf_tag_elementクラスを生成します。
*
*
@access
public
*
@param
string
$strname
htmlタグのエレメント名(デフォルトは指定なし)
*
@param
bool
$blclose
閉じタグ要不要フラグ(デフォルトはTRUE 出力あり)
*
@param
string
$strcase
大文字・小文字出力(デフォルトは指定なし そのまま出力)
*
@return
void
***/
function
htf_tag_element
(
$strname
=
""
,
$blclose
=
TRUE
,
$strcase
=
""
)
{
//属性配列作成
$this
->
attributes
=
array
(
)
;
//要素内容配列作成
$this
->
contents
=
array
(
)
;
//要素名設定
$this
->
name
=
$strname
;
//クローズタグの要・不要
$this
->
close_flg
=
$blclose
;
//要素名の大文字・小文字設定
$this
->
case
=
$strcase
;
return
;
}
/**
* 引数指定内容で属性内容を追加します。
*
*
@access
public
*
@param
string
$strattr
属性名
*
@param
string
$strvalue
属性値(デフォルトは空文字)
*
@return
int
成功時:追加後のattributes要素数 失敗時:-1
***/
function
add_attribute
(
$strattr
,
$strvalue
=
""
,
$strcase
=
""
)
{
if
(
htf_is_existsval
(
$strattr
))
{
$objattr
=
new
htf_tag_attribute
(
$strattr
,
$strvalue
,
$strcase
)
;
array_push
(
$this
->
attributes
,
$objattr
)
;
return
count
(
$this
->
attributes
)
;
}
else
{
return
-
1
;
}
}
/**
* 引数指定内容で要素内容を追加します。
* 追加する要素は以下の内容である必要があります。<br>
* (1)string文字列<br>
* (2)htf_tag_elementオブジェクトまたは派生オブジェクト<br>
* (3)get_htmltagメソッド・print_htmltagメソッドを実装しているオブジェクト<br>
* <br>
* 上記でない場合には、get_htmltagメソッド・print_htmltagメソッドが
* 正しく動作しません。また、(3)の場合も、実装はget_htmltagやprint_htmltagの
* 仕様と合致する必要があります。
*
*
@access
public
*
@param
mixed
$objadd
追加する要素をあらわす文字列あるいはオブジェクト
*
@return
int
成功時:追加後のcontents要素数 失敗時:-1
***/
function
add_content
(
$objadd
)
{
if
(
htf_is_existsval
(
$objadd
))
{
array_push
(
$this
->
contents
,
$objadd
)
;
return
count
(
$this
->
contents
)
;
}
else
{
return
-
1
;
}
}
/**
* htmlタグを文字列として取得します。
*
*
@access
public
*
@return
string
htmlタグ文字列
***/
function
get_htmltag
(
)
{
//開始タグ生成
$retstr
=
htf_add_cr
(
$this
->
get_starttag
(
))
;
if
(
htf_is_existsval
(
$retstr
))
{
//要素内容タグを作成
$retstr
.=
$this
->
get_contents
(
)
;
//閉じタグ
if
(
$this
->
close_flg
)
{
//閉じタグ
$retstr
.=
htf_add_cr
(
$this
->
get_endtag
(
))
;
}
return
$retstr
;
}
else
{
return
""
;
}
}
/**
* htmlタグをprint文で出力します。
*
*
@access
public
*
@return
void
***/
function
print_htmltag
(
)
{
//開始タグ生成
if
(
htf_is_existsval
(
$this
->
name
))
{
$outstr
=
htf_add_cr
(
$this
->
get_starttag
(
))
;
print
(
$outstr
)
;
//要素内容タグを作成
for
(
$i
=
0
;
$i
<
count
(
$this
->
contents
)
;
$i
++
)
{
if
(
htf_is_existsval
(
$this
->
contents
[
$i
]
))
{
if
(
is_object
(
$this
->
contents
[
$i
]
))
{
//オブジェクトの場合はprint_htmltagメソッドを呼ぶ
$this
->
contents
[
$i
]
->
print_htmltag
(
)
;
}
else
{
//他の場合(文字・数値など)はそのまま
$constr
=
htf_add_cr
(
$this
->
contents
[
$i
]
)
;
print
(
$constr
)
;
}
}
}
//閉じタグ
if
(
$this
->
close_flg
)
{
//閉じタグ
$outstr
=
htf_add_cr
(
$this
->
get_endtag
(
))
;
print
(
$outstr
)
;
}
}
return
;
}
/**
* html開始タグを文字列として取得します。
*
*
@access
public
*
@return
string
html開始タグ記述
***/
function
get_starttag
(
)
{
$retstr
=
""
;
$elemname
=
$this
->
get_element_name
(
)
;
if
(
htf_is_existsval
(
$elemname
))
{
$retstr
=
'<'
.
$elemname
;
for
(
$i
=
0
;
$i
<
count
(
$this
->
attributes
)
;
$i
++
)
{
$strattr
=
$this
->
attributes
[
$i
]
->
get_description
(
)
;
if
(
htf_is_existsval
(
$strattr
))
{
$retstr
.=
' '
.
$strattr
;
}
}
$retstr
.=
'>'
;
}
return
$retstr
;
}
/**
* 全要素内容を文字列として取得します。
*
*
@access
public
*
@return
string
全要素内容のhtmlタグ
***/
function
get_contents
(
)
{
//要素内容タグを作成
$retstr
=
""
;
for
(
$i
=
0
;
$i
<
count
(
$this
->
contents
)
;
$i
++
)
{
$retstr
.=
$this
->
get_content
(
$i
)
;
}
return
$retstr
;
}
/**
* html終了タグを文字列として取得します。
*
*
@access
public
*
@return
string
html終了タグ記述
***/
function
get_endtag
(
)
{
$retstr
=
""
;
$elemname
=
$this
->
get_element_name
(
)
;
if
(
htf_is_existsval
(
$elemname
))
{
$retstr
=
'</'
.
$elemname
.
'>'
;
}
return
$retstr
;
}
/**
* 要素番号を指定し、指定要素内容のタグを取得します。
*
*
@access
private
*
@param
int
$itemno
指定要素番号
*
@return
string
指定要素内容のhtmlタグ
***/
function
get_content
(
$itemno
)
{
//要素内容タグを作成
if
(
htf_is_existsval
(
$this
->
contents
[
$itemno
]
))
{
if
(
is_object
(
$this
->
contents
[
$itemno
]
))
{
//オブジェクトの場合はget_htmltagメソッドを呼ぶ
$constr
=
$this
->
contents
[
$itemno
]
->
get_htmltag
(
)
;
}
else
{
//他の場合(文字・数値など)はそのまま
$constr
=
htf_add_cr
(
$this
->
contents
[
$itemno
]
)
;
}
return
$constr
;
}
}
/**
* 大文字・小文字を判別し、要素名を取得します。
*
*
@access
private
*
@return
string
要素名
***/
function
get_element_name
(
)
{
$retstr
=
""
;
if
(
htf_comp_property
(
$this
->
case
,
HTF_CASE_LOWER
))
{
//小文字に変換して出力
$retstr
=
strtolower
(
$this
->
name
)
;
}
else
if
(
htf_comp_property
(
$this
->
case
,
HTF_CASE_UPPER
))
{
//大文字に変換して出力
$retstr
=
strtoupper
(
$this
->
name
)
;
}
else
{
//そのまま出力
$retstr
=
$this
->
name
;
}
return
$retstr
;
}
}
?>
Documentation generated on Tue, 19 Sep 2006 06:21:18 +0900 by
phpDocumentor 1.3.0