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; } }