- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
- namespace Zend\View;
-
- use ArrayObject;
-
- /**
- * Abstract class for Zend_View to help enforce private constructs.
- *
- * @todo Allow specifying string names for manager, filter chain, variables
- * @todo Move escaping into variables object
- * @todo Move strict variables into variables object
- */
- class Variables extends ArrayObject
- {
- /**
- * Strict variables flag; when on, undefined variables accessed in the view
- * scripts will trigger notices
- *
- * @var bool
- */
- protected $strictVars = false;
-
- /**
- * Constructor
- *
- * @param array $variables
- * @param array $options
- */
- public function __construct(array $variables = array(), array $options = array())
- {
- parent::__construct(
- $variables,
- ArrayObject::ARRAY_AS_PROPS,
- 'ArrayIterator'
- );
-
- $this->setOptions($options);
- }
-
- /**
- * Configure object
- *
- * @param array $options
- * @return Variables
- */
- public function setOptions(array $options)
- {
- foreach ($options as $key => $value) {
- switch (strtolower($key)) {
- case 'strict_vars':
- $this->setStrictVars($value);
- break;
- default:
- // Unknown options are considered variables
- $this[$key] = $value;
- break;
- }
- }
- return $this;
- }
-
- /**
- * Set status of "strict vars" flag
- *
- * @param bool $flag
- * @return Variables
- */
- public function setStrictVars($flag)
- {
- $this->strictVars = (bool) $flag;
- return $this;
- }
-
- /**
- * Are we operating with strict variables?
- *
- * @return bool
- */
- public function isStrict()
- {
- return $this->strictVars;
- }
-
- /**
- * Assign many values at once
- *
- * @param array|object $spec
- * @return Variables
- * @throws Exception\InvalidArgumentException
- */
- public function assign($spec)
- {
- if (is_object($spec)) {
- if (method_exists($spec, 'toArray')) {
- $spec = $spec->toArray();
- } else {
- $spec = (array) $spec;
- }
- }
- if (!is_array($spec)) {
- throw new Exception\InvalidArgumentException(sprintf(
- 'assign() expects either an array or an object as an argument; received "%s"',
- gettype($spec)
- ));
- }
- foreach ($spec as $key => $value) {
- $this[$key] = $value;
- }
-
- return $this;
- }
-
- /**
- * Get the variable value
- *
- * If the value has not been defined, a null value will be returned; if
- * strict vars on in place, a notice will also be raised.
- *
- * Otherwise, returns _escaped_ version of the value.
- *
- * @param mixed $key
- * @return mixed
- */
- public function offsetGet($key)
- {
- if (!$this->offsetExists($key)) {
- if ($this->isStrict()) {
- trigger_error(sprintf(
- 'View variable "%s" does not exist', $key
- ), E_USER_NOTICE);
- }
- return null;
- }
-
- $return = parent::offsetGet($key);
-
- // If we have a closure/functor, invoke it, and return its return value
- if (is_object($return) && is_callable($return)) {
- $return = call_user_func($return);
- }
-
- return $return;
- }
-
- /**
- * Clear all variables
- *
- * @return void
- */
- public function clear()
- {
- $this->exchangeArray(array());
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|