1<?php 2/** 3 * Array-based data source for HTML_QuickForm2 objects 4 * 5 * PHP version 5 6 * 7 * LICENSE: 8 * 9 * Copyright (c) 2006-2010, Alexey Borzov <avb@php.net>, 10 * Bertrand Mansion <golgote@mamasam.com> 11 * All rights reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions 15 * are met: 16 * 17 * * Redistributions of source code must retain the above copyright 18 * notice, this list of conditions and the following disclaimer. 19 * * Redistributions in binary form must reproduce the above copyright 20 * notice, this list of conditions and the following disclaimer in the 21 * documentation and/or other materials provided with the distribution. 22 * * The names of the authors may not be used to endorse or promote products 23 * derived from this software without specific prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 26 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 27 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 29 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 31 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 32 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 33 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 34 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 35 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 * 37 * @category HTML 38 * @package HTML_QuickForm2 39 * @author Alexey Borzov <avb@php.net> 40 * @author Bertrand Mansion <golgote@mamasam.com> 41 * @license http://opensource.org/licenses/bsd-license.php New BSD License 42 * @version SVN: $Id: Array.php 294057 2010-01-26 21:10:28Z avb $ 43 * @link http://pear.php.net/package/HTML_QuickForm2 44 */ 45 46/** 47 * Interface for data sources used by HTML_QuickForm2 objects 48 */ 49// require_once 'HTML/QuickForm2/DataSource.php'; 50 51/** 52 * Array-based data source for HTML_QuickForm2 objects 53 * 54 * @category HTML 55 * @package HTML_QuickForm2 56 * @author Alexey Borzov <avb@php.net> 57 * @author Bertrand Mansion <golgote@mamasam.com> 58 * @version Release: @package_version@ 59 */ 60class HTML_QuickForm2_DataSource_Array implements HTML_QuickForm2_DataSource 61{ 62 /** 63 * Array containing elements' values 64 * @var array 65 */ 66 protected $values; 67 68 /** 69 * Class constructor, initializes the values array 70 * 71 * @param array Array containing the elements' values 72 */ 73 public function __construct($values = array()) 74 { 75 $this->values = $values; 76 } 77 78 public function getValue($name) 79 { 80 if (empty($this->values)) { 81 return null; 82 } 83 if (strpos($name, '[')) { 84 $tokens = explode('[', str_replace(']', '', $name)); 85 $value = $this->values; 86 do { 87 $token = array_shift($tokens); 88 if (!isset($value[$token])) { 89 return null; 90 } 91 $value = $value[$token]; 92 } while (!empty($tokens)); 93 return $value; 94 } elseif (isset($this->values[$name])) { 95 return $this->values[$name]; 96 } else { 97 return null; 98 } 99 } 100} 101?> 102