class FactoryFoo implements FactoryInterface
{
    public function createService(ServiceLocatorInterface $locator, $cName, $rName)
    {
        return new Service();
    }
}
class Service
{
}
function FactoryFunction(ServiceLocatorInterface $locator, $cName, $rName)
{
    return new Service();
}
// setup ServiceLocator
$serviceLocator = new ServiceLocator();
// factory as closure
$serviceLocator->setFactory('service1', function (ServiceLocatorInterface $locator) {
    return Service();
});
// factory as closure
$serviceLocator->setFactory('service2', 'FactoryFunction');
// factory as class
$serviceLocator->setFactory('service3', '\\Example\\FactoryFoo');
// factory as instance
$serviceLocator->setFactory('service4', new FactoryFoo());
// get a service
$service1 = $serviceLocator->get('service1');
$service2 = $serviceLocator->get('service2');
$service3 = $serviceLocator->get('service3');
$service4 = $serviceLocator->get('service4');
 public function doSetPopedom()
 {
     $_POST['gid'] = explode(',', $_POST['gid']);
     $_POST['nid'] = explode(',', $_POST['nid']);
     foreach ($_POST['gid'] as $k => $v) {
         if (!is_numeric($v) || intval($v) <= 0) {
             unset($_POST['gid'][$k]);
         }
     }
     if (empty($_POST['gid'])) {
         echo 0;
         return;
     }
     foreach ($_POST['nid'] as $k => $v) {
         if (!is_numeric($v) || intval($v) <= 0) {
             unset($_POST['nid'][$k]);
         }
     }
     if (empty($_POST['nid'])) {
         echo 0;
         return;
     }
     //获取节点的关联节点ID
     $map['parent_node_id'] = array('in', $_POST['nid']);
     $nids = D('Node')->where($map)->field('node_id')->findAll();
     $nids = getSubByKey($nids, 'node_id');
     $nids = array_merge($nids, $_POST['nid']);
     if (empty($nids)) {
         echo 0;
         return;
     }
     $_LOG['uid'] = $this->mid;
     $_LOG['type'] = '3';
     $data[] = '用户 - 权限 - 节点管理';
     $where['node_id'] = array('in', $_POST['nid']);
     $data['1']['nid'] = $_POST['nid'];
     $data['1']['gid'] = getSubByKey(M('user_group_popedom')->where($where)->findall(), 'user_group_id');
     $data[] = $_POST;
     $_LOG['data'] = serialize($data);
     $_LOG['ctime'] = time();
     M('AdminLog')->add($_LOG);
     //删除旧记录
     M('user_group_popedom')->where('`node_id` IN ( ' . implode(',', $nids) . ' )')->delete();
     //组装插入SQL
     $sql = "INSERT INTO `" . C('DB_PREFIX') . "user_group_popedom` (`user_group_id`,`node_id`) VALUES ";
     foreach ($nids as $nid) {
         foreach ($_POST['gid'] as $gid) {
             $sql .= "('{$gid}', '{$nid}'),";
         }
     }
     $sql = rtrim($sql, ',');
     $res = M('')->execute($sql);
     if ($res) {
         #每次编辑完权限 就设置相关缓存
         Service('SystemPopedom')->delNodeCache();
         echo 1;
     } else {
         echo 0;
     }
 }