<?php
/**
 * Link         :   http://www.phpcorner.net
 * User         :   qingbing<780042175@qq.com>
 * Date         :   2018-10-27
 * Version      :   1.0
 */

namespace Test;

use Helper\CMap;
use TestCore\Tester;

/**
 * Class Core
 * @package Test
 */
class TestMap extends Tester
{
    /**
     * 执行函数
     * @return mixed|void
     * @throws \Helper\Exception
     */
    public function run()
    {
        // 数组创建 map
        $map1 = new CMap([
            'name' => 'xx',
            'sex' => 'male',
        ]);
        $map2 = new CMap([
            'name' => 'php',
            'age' => '10',
        ]);
        // map 创建 map
        $map = new CMap($map1);
        // 合并 map
        $map->mergeWith($map2);
        // 添加
        $map->add('height', 80);
        $map->add('function', function () {
            var_dump('function-method');
        });
        // 直接调用
        call_user_func($map->get('function'));

        // 删除
        $map->remove('function');
        var_dump($map->count);

        // 迭代遍历
        foreach ($map as $key => $value) {
            if (is_callable($value)) {
                var_dump("==={$key}===");
                call_user_func($value);
            } else {
                var_dump("==={$key} : {$value}===");
            }
        }
        var_dump($map);

    }
}