Viewing file: RuntimeConfigurable.php (3.8 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /* * $Id: RuntimeConfigurable.php 829 2010-08-25 15:14:53Z mrook $ * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many individuals * and is licensed under the LGPL. For more information please see * <http://phing.info>. */
/** * Wrapper class that holds the attributes of a Task (or elements * nested below that level) and takes care of configuring that element * at runtime. * * <strong>SMART-UP INLINE DOCS</strong> * * @author Andreas Aderhold <andi@binarycloud.com> * @author Hans Lellelid <hans@xmpl.org> * @version $Revision: 829 $ * @package phing */ class RuntimeConfigurable {
private $elementTag = null; private $children = array(); private $wrappedObject = null; private $attributes = array(); private $characters = "";
/** @param proxy The element to wrap. */ function __construct($proxy, $elementTag) { $this->wrappedObject = $proxy; $this->elementTag = $elementTag; }
function setProxy($proxy) { $this->wrappedObject = $proxy; }
/** Set's the attributes for the wrapped element. */ function setAttributes($attributes) { $this->attributes = $attributes; }
/** Returns the AttributeList of the wrapped element. */ function getAttributes() { return $this->attributes; }
/** Adds child elements to the wrapped element. */ function addChild(RuntimeConfigurable $child) { $this->children[] = $child; }
/** Returns the child with index */ function getChild($index) { return $this->children[(int)$index]; }
/** Add characters from #PCDATA areas to the wrapped element. */ function addText($data) { $this->characters .= (string) $data; }
function getElementTag() { return $this->elementTag; }
/** Configure the wrapped element and all children. */ function maybeConfigure(Project $project) { $id = null;
// DataType configured in ProjectConfigurator // if ( is_a($this->wrappedObject, "DataType") ) // return;
if ($this->attributes || $this->characters) { ProjectConfigurator::configure($this->wrappedObject, $this->attributes, $project);
if (isset($this->attributes["id"])) { $id = $this->attributes["id"]; }
if ($this->characters) { ProjectConfigurator::addText($project, $this->wrappedObject, (string) $this->characters); $this->characters=""; } if ($id !== null) { $project->addReference($id, $this->wrappedObject); } }
if ( is_array($this->children) && !empty($this->children) ) { // Configure all child of this object ... foreach($this->children as $child) { $child->maybeConfigure($project); ProjectConfigurator::storeChild($project, $this->wrappedObject, $child->wrappedObject, strtolower($child->getElementTag())); } } } }
|