Skip to content

Commit

Permalink
cleancode
Browse files Browse the repository at this point in the history
  • Loading branch information
ueaner committed May 21, 2018
1 parent 6ffb1d1 commit 6e56cfc
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 19 deletions.
32 changes: 19 additions & 13 deletions src/Di/Container.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,13 @@ public function set($id, $definition, $shared = true)
*
* 当传入未注册为服务标识的类名时,自动将类名注册为服务,并返回类实例
*
* @param string $id 服务标识|类名
* @param string $id 服务标识|类名|别名
* @param array $parameters 参数
* @return mixed
*/
public function get($id, array $parameters = [])
{
$id = $this->getAlias($id);
$id = $this->getAliasId($id);

// 如果是共享实例已解析,则返回
if (isset($this->sharedInstances[$id])) {
Expand Down Expand Up @@ -124,28 +124,34 @@ public function get($id, array $parameters = [])
}

/**
* 为服务添加别名
* 为某个服务定义别名,主要用于类型提示(接口)的自动注入
*
* @param string $alias
* @param string $abstract
* @param string $alias 别名(接口名)
* @param string $id 服务标识|类名
* @return void
*/
public function alias($alias, $abstract)
public function alias($alias, $id)
{
$this->aliases[$abstract] = $alias;
$this->aliases[$alias] = $id;
}

public function getAlias($abstract)
/**
* 获取某个别名对应的服务标识
*
* @param string $alias 别名
* @return string
*/
public function getAliasId($alias)
{
if (!isset($this->aliases[$abstract])) {
return $abstract;
if (!isset($this->aliases[$alias])) {
return $alias;
}

if ($this->aliases[$abstract] === $abstract) {
throw new \LogicException("[{$abstract}] is aliased to itself.");
if ($this->aliases[$alias] === $alias) {
throw new \LogicException("[{$alias}] is aliased to itself.");
}

return $this->getAlias($this->aliases[$abstract]);
return $this->getAliasId($this->aliases[$alias]);
}

/**
Expand Down
12 changes: 6 additions & 6 deletions tests/Di/ContainerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -239,14 +239,14 @@ public function testAlias()
];

$container = $this->container;
foreach ($aliases as $alias => $abstracts) {
foreach ($abstracts as $abstract) {
$container->alias($alias, $abstract);
foreach ($aliases as $key => $aliases) {
foreach ($aliases as $alias) {
$container->alias($alias, $key);
}
}

$containerAlias = $container->getAlias(\Psr\Container\ContainerInterface::class);
$oneAlias = $container->getAlias('three');
$containerAlias = $container->getAliasId(\Psr\Container\ContainerInterface::class);
$oneAlias = $container->getAliasId('three');

$this->assertEquals('container', $containerAlias);
$this->assertEquals('one', $oneAlias);
Expand All @@ -264,6 +264,6 @@ public function testAliasedItselfException()

$container->alias($selfAlias, $selfAlias);

$container->getAlias($selfAlias);
$container->getAliasId($selfAlias);
}
}

0 comments on commit 6e56cfc

Please sign in to comment.