Overview

Namespaces

  • Peach
    • DF
    • DT
    • Http
      • Body
      • Header
    • Markup
    • Util

Classes

  • Peach\DF\Base64Codec
  • Peach\DF\CodecChain
  • Peach\DF\JsonCodec
  • Peach\DF\SerializationCodec
  • Peach\DF\Utf8Codec
  • Peach\DT\AbstractTime
  • Peach\DT\Clock
  • Peach\DT\Date
  • Peach\DT\Datetime
  • Peach\DT\DefaultClock
  • Peach\DT\FixedClock
  • Peach\DT\FormatWrapper
  • Peach\DT\HttpDateFormat
  • Peach\DT\OffsetClock
  • Peach\DT\ShiftFormat
  • Peach\DT\SimpleFormat
  • Peach\DT\TimeEquator
  • Peach\DT\Timestamp
  • Peach\DT\TimeWrapper
  • Peach\DT\UnixTimeFormat
  • Peach\DT\Util
  • Peach\DT\W3cDatetimeFormat
  • Peach\Http\Body
  • Peach\Http\Body\CodecRenderer
  • Peach\Http\Body\StringRenderer
  • Peach\Http\DefaultEndpoint
  • Peach\Http\Header\CookieItem
  • Peach\Http\Header\CookieOptions
  • Peach\Http\Header\HttpDate
  • Peach\Http\Header\NoField
  • Peach\Http\Header\QualityValues
  • Peach\Http\Header\Raw
  • Peach\Http\Header\SetCookie
  • Peach\Http\Header\Status
  • Peach\Http\Request
  • Peach\Http\Response
  • Peach\Http\Util
  • Peach\Markup\AbstractHelper
  • Peach\Markup\AbstractRenderer
  • Peach\Markup\BaseHelper
  • Peach\Markup\BreakControlWrapper
  • Peach\Markup\Builder
  • Peach\Markup\Code
  • Peach\Markup\Comment
  • Peach\Markup\ContainerElement
  • Peach\Markup\Context
  • Peach\Markup\DebugBuilder
  • Peach\Markup\DebugContext
  • Peach\Markup\DefaultBreakControl
  • Peach\Markup\DefaultBuilder
  • Peach\Markup\DefaultContext
  • Peach\Markup\Element
  • Peach\Markup\EmptyElement
  • Peach\Markup\HelperObject
  • Peach\Markup\HtmlHelper
  • Peach\Markup\Indent
  • Peach\Markup\MinimalBreakControl
  • Peach\Markup\NameBreakControl
  • Peach\Markup\NameValidator
  • Peach\Markup\NodeList
  • Peach\Markup\None
  • Peach\Markup\SgmlRenderer
  • Peach\Markup\Text
  • Peach\Markup\XmlRenderer
  • Peach\Util\AbstractMapEntry
  • Peach\Util\ArrayMap
  • Peach\Util\ArrayMapEntry
  • Peach\Util\Arrays
  • Peach\Util\DefaultComparator
  • Peach\Util\DefaultEquator
  • Peach\Util\HashMap
  • Peach\Util\HashMapEntry
  • Peach\Util\Strings
  • Peach\Util\Values

Interfaces

  • Peach\DF\Codec
  • Peach\DT\Format
  • Peach\DT\Time
  • Peach\Http\BodyRenderer
  • Peach\Http\Endpoint
  • Peach\Http\HeaderField
  • Peach\Http\MultiHeaderField
  • Peach\Http\SingleHeaderField
  • Peach\Markup\BreakControl
  • Peach\Markup\Component
  • Peach\Markup\Container
  • Peach\Markup\Helper
  • Peach\Markup\Node
  • Peach\Markup\Renderer
  • Peach\Util\Comparable
  • Peach\Util\Comparator
  • Peach\Util\Equator
  • Peach\Util\Map
  • Peach\Util\MapEntry
  • Overview
  • Namespace
  • Class
  1: <?php
  2: /*
  3:  * Copyright (c) 2014 @trashtoy
  4:  * https://github.com/trashtoy/
  5:  * 
  6:  * Permission is hereby granted, free of charge, to any person obtaining a copy of
  7:  * this software and associated documentation files (the "Software"), to deal in
  8:  * the Software without restriction, including without limitation the rights to use,
  9:  * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
 10:  * Software, and to permit persons to whom the Software is furnished to do so,
 11:  * subject to the following conditions:
 12:  * 
 13:  * The above copyright notice and this permission notice shall be included in all
 14:  * copies or substantial portions of the Software.
 15:  * 
 16:  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 17:  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 18:  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 19:  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 20:  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 21:  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 22:  */
 23: /**
 24:  * PHP class file.
 25:  * @auhtor trashtoy
 26:  * @since  2.0.0
 27:  */
 28: namespace Peach\Markup;
 29: 
 30: /**
 31:  * 汎用的な Helper オブジェクトです.
 32:  * コンストラクタ引数に指定された Builder および空要素タグ一覧をもとにノードの生成・出力を行います.
 33:  * 
 34:  * このクラスのインスタンスは, AbstractHelper の各派生クラスにおいて親の
 35:  * Helper オブジェクトとして使用されることを想定しています.
 36:  */
 37: class BaseHelper implements Helper
 38: {
 39:     /**
 40:      * 出力の際に使用される Builder です
 41:      * @var Builder
 42:      */
 43:     private $builder;
 44:     
 45:     /**
 46:      * 空要素として扱われる要素名の一覧です
 47:      * @var array
 48:      */
 49:     private $emptyNodeNames;
 50:     
 51:     /**
 52:      * 指定された Builder を使ってマークアップを行う, 新しい Helper インスタンスを生成します.
 53:      * 第二引数で, 空要素として扱われる要素名の一覧を指定することができます.
 54:      * @param Builder $builder        マークアップに利用する Builder
 55:      * @param array   $emptyNodeNames 空要素の要素名一覧
 56:      */
 57:     public function __construct(Builder $builder, array $emptyNodeNames = array())
 58:     {
 59:         $this->builder        = $builder;
 60:         $this->emptyNodeNames = $emptyNodeNames;
 61:     }
 62:     
 63:     /**
 64:      * 新しい HelperObject を生成します.
 65:      * このメソッドが返す HelperObject は, 引数の型に応じて以下のように振る舞います.
 66:      * 
 67:      * - 文字列の場合: その文字列を要素名に持つ {@link Element}
 68:      * - null または空文字列の場合: 空の {@link NodeList}
 69:      * - Node オブジェクトの場合: その Node 自身
 70:      * 
 71:      * 第 2 引数に配列を指定した場合, 生成された要素に対して属性をセットすることが出来ます.
 72:      * (生成された HelperObject が要素ではない場合, 第 2 引数は無視されます)
 73:      * 
 74:      * @param  string|Component $var
 75:      * @param  array $attr
 76:      * @return HelperObject
 77:      */
 78:     public function tag($var, $attr = array())
 79:     {
 80:         $object = new HelperObject($this, $var);
 81:         if (count($attr)) {
 82:             $object->attr($attr);
 83:         }
 84:         return $object;
 85:     }
 86:     
 87:     /**
 88:      * 指定された HelperObject の変換結果を返します.
 89:      * このヘルパーに設定されている Builder を使って, 引数の HelperObject を build した結果を返します.
 90:      * @param  HelperObject $object
 91:      * @return mixed
 92:      */
 93:     public function write(HelperObject $object)
 94:     {
 95:         return $this->builder->build($object->getNode());
 96:     }
 97:     
 98:     /**
 99:      * この Helper にセットされている Builder オブジェクトを返します.
100:      * 返り値の Builder に対する変更は, この Helper にも影響されます.
101:      * 
102:      * @return Builder
103:      */
104:     public function getBuilder()
105:     {
106:         return $this->builder;
107:     }
108:     
109:     /**
110:      * この Helper にセットされている Builder を,
111:      * 引数の Builder オブジェクトで上書きします.
112:      * 
113:      * @param Builder $builder
114:      */
115:     public function setBuilder(Builder $builder)
116:     {
117:         $this->builder = $builder;
118:     }
119:     
120:     /**
121:      * 指定された要素名を持つ新しい Element オブジェクトを返します.
122:      * 
123:      * @param  string  $name 要素名
124:      * @return Element       指定された要素名を持つ Element
125:      */
126:     public function createElement($name)
127:     {
128:         return in_array($name, $this->emptyNodeNames) ?
129:             new EmptyElement($name) : new ContainerElement($name);
130:     }
131: }
132: 
PEACH2 API documentation generated by ApiGen