ArrayObject 拡張機能の応用例コード

WBOY
リリース: 2016-06-21 08:58:07
オリジナル
1218 人が閲覧しました
Zend_Config很好用,我比较喜欢它的数组形态,其实ArrayObject也可以做同样的事情

$config = array(
'db' => array (
        'adapter' => 'mysql',
        'config' => array (
            'host' => 'localhost',
            'port' => '3306',
            'dbname' => 'mydbname',
            'username' => 'dbuser',
            'password' => 'dbpassword',
            'charset' => 'utf8',
            'prefix' => '',
        ),
    ),
);
$config = new Zend_Config($config);
echo $config->db->adapter;
foreach ($config->db->config as $k => $v) {
    echo "$k | $v \n";
}
echo count($config);
//... 甚至其他更多的方法

下面的扩展,通过几个魔术方法,不仅可以实现Zend_Config可以做到的事情,还可以继承Array_Object所有的可用方法


/**
*
を使用して配列をオブジェクト形式に変換します *
* @package core
* @author Akon (トマトは赤い)
* @copyright Copyright ( c) 2008 (http://www.tblog.com.cn)
* @license http://www.gnu.org/licenses/gpl.html GPL 2
*/
class Extend_ArrayObject extends ArrayObject
{

/**
* コンストラクターメソッド
*
* @param array $array
*/
public function __construct(array $array = array())
{
foreach ($array as &$value)
is_array($value) && $value = new self($value);
parent ::__construct($array);
}

/**
* マジックメソッドを使用して名前を指定して値を取得します
*
* @param string $index
* @returnmixed
*/
public function __get($index)
{
return $this->offsetGet ($index);
}

/**
* マジックメソッドを使用して指定された名前の値を変更します
*
* @param string $index
* @parammixed $value
*/
public function __set($index, $value)
{
$this->offsetSet( $index, $value);
}

/**
* マジックメソッドを使用してデータが設定されているかどうかを判断します
*
* @param string $index
* @return boolean
*/
public function __isset($index)
{
return $this->offsetExists( $index);
}

/**
* マジックメソッドでデータを削除
*
* @param string $index
*/
public function __unset($index)
{
$this->offsetUnset($index);
}

/**
* データ情報を配列形式に変換
*
* @return array
*/
public function toArray()
{
$array = $this->getArrayCopy();
foreach ( $array as &$value)
($value instanceof self) && $value = $value->toArray();
return $array;
}

/**
* データグループを文字列形式に変換します
*
* @return array
*/
public function __toString()
{
return var_export($this->toArray(), true);
}

}



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート