File indexing completed on 2024-06-23 05:55:26

0001 <?php
0002 /**
0003  * Zend Framework
0004  *
0005  * LICENSE
0006  *
0007  * This source file is subject to the new BSD license that is bundled
0008  * with this package in the file LICENSE.txt.
0009  * It is also available through the world-wide-web at this URL:
0010  * http://framework.zend.com/license/new-bsd
0011  * If you did not receive a copy of the license and are unable to
0012  * obtain it through the world-wide-web, please send an email
0013  * to license@zend.com so we can send you a copy immediately.
0014  *
0015  * @category   Zend
0016  * @package    Zend_Ldap
0017  * @subpackage Schema
0018  * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0019  * @license    http://framework.zend.com/license/new-bsd     New BSD License
0020  * @version    $Id$
0021  */
0022 
0023 /**
0024  * Zend_Ldap_Node_Schema_Item provides a base implementation for managing schema
0025  * items like objectClass and attribute.
0026  *
0027  * @category   Zend
0028  * @package    Zend_Ldap
0029  * @subpackage Schema
0030  * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
0031  * @license    http://framework.zend.com/license/new-bsd     New BSD License
0032  */
0033 abstract class Zend_Ldap_Node_Schema_Item implements ArrayAccess, Countable
0034 {
0035     /**
0036      * The underlying data
0037      *
0038      * @var array
0039      */
0040     protected $_data;
0041 
0042     /**
0043      * Constructor.
0044      *
0045      * @param array $data
0046      */
0047     public function __construct(array $data)
0048     {
0049         $this->setData($data);
0050     }
0051 
0052     /**
0053      * Sets the data
0054      *
0055      * @param  array $data
0056      * @return Zend_Ldap_Node_Schema_Item Provides a fluent interface
0057      */
0058     public function setData(array $data)
0059     {
0060         $this->_data = $data;
0061         return $this;
0062     }
0063 
0064     /**
0065      * Gets the data
0066      *
0067      * @return array
0068      */
0069     public function getData()
0070     {
0071         return $this->_data;
0072     }
0073 
0074     /**
0075      * Gets a specific attribute from this item
0076      *
0077      * @param  string $name
0078      * @return mixed
0079      */
0080     public function __get($name)
0081     {
0082         if (array_key_exists($name, $this->_data)) {
0083             return $this->_data[$name];
0084         } else {
0085             return null;
0086         }
0087     }
0088 
0089     /**
0090      * Checks whether a specific attribute exists.
0091      *
0092      * @param  string $name
0093      * @return boolean
0094      */
0095     public function __isset($name)
0096     {
0097         return (array_key_exists($name, $this->_data));
0098     }
0099 
0100     /**
0101      * Always throws BadMethodCallException
0102      * Implements ArrayAccess.
0103      *
0104      * This method is needed for a full implementation of ArrayAccess
0105      *
0106      * @param  string $name
0107      * @param  mixed $value
0108      * @return null
0109      * @throws BadMethodCallException
0110      */
0111     public function offsetSet($name, $value)
0112     {
0113         throw new BadMethodCallException();
0114     }
0115 
0116     /**
0117      * Gets a specific attribute from this item
0118      *
0119      * @param  string $name
0120      * @return mixed
0121      */
0122     public function offsetGet($name)
0123     {
0124         return $this->__get($name);
0125     }
0126 
0127     /**
0128      * Always throws BadMethodCallException
0129      * Implements ArrayAccess.
0130      *
0131      * This method is needed for a full implementation of ArrayAccess
0132      *
0133      * @param  string $name
0134      * @return null
0135      * @throws BadMethodCallException
0136      */
0137     public function offsetUnset($name)
0138     {
0139         throw new BadMethodCallException();
0140     }
0141 
0142     /**
0143      * Checks whether a specific attribute exists.
0144      *
0145      * @param  string $name
0146      * @return boolean
0147      */
0148     public function offsetExists($name)
0149     {
0150         return $this->__isset($name);
0151     }
0152 
0153     /**
0154      * Returns the number of attributes.
0155      * Implements Countable
0156      *
0157      * @return int
0158      */
0159     public function count()
0160     {
0161         return count($this->_data);
0162     }
0163 }