This repository has been archived by the owner on Jan 30, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request zendframework/zendframework#1 from zendframework/d…
…evelop Develop
- Loading branch information
176 parents
70cfec4
+
acb4607
+
54d489e
+
361c1cf
+
e8e4ce2
+
f4be937
+
9323faa
+
65deb5a
+
d5a4f17
+
94b36e8
+
62824a2
+
6378cbe
+
a10281c
+
cd0ff39
+
02e8122
+
a667dd4
+
02ccc35
+
7d61487
+
ab2f663
+
a27ca10
+
75af0e5
+
24f498b
+
d2dd157
+
6c759d8
+
51b0320
+
aabe1c0
+
e76b67c
+
5d85a78
+
d285b08
+
c5df6b0
+
ff58ff4
+
5675884
+
a55ead5
+
47eb5a8
+
a36e34a
+
3e520ad
+
7b0d374
+
461c28b
+
3890e69
+
316384e
+
1431343
+
debad5a
+
1680741
+
4497a00
+
bb6633a
+
6b7ed03
+
35fcae3
+
0737e9d
+
c31bf4c
+
918649e
+
ecbe771
+
b4124fc
+
f4e1da0
+
a8c70a8
+
50d3c5d
+
79180fa
+
f6f9386
+
8ed6590
+
d79a4a4
+
3958052
+
eae6146
+
1cc7a46
+
1d9542f
+
a22d6e2
+
3496b67
+
9398e77
+
687d980
+
900dc7d
+
21f6363
+
0eeb6ff
+
8c442a3
+
adf1f8e
+
c2ceb18
+
9b17a1c
+
d5dab4a
+
346a62a
+
9808633
+
bdeec54
+
1a2506a
+
f5f3d02
+
b623064
+
4338bf4
+
bdababf
+
4054000
+
4449c16
+
d3d8b33
+
8427cf8
+
8d162ec
+
a988e9a
+
3e9d597
+
ee93c08
+
9d3ce53
+
f04a59c
+
0c3f2de
+
a654383
+
502d937
+
93350ca
+
23a0ccc
+
15dc071
+
6ca79e9
+
7645850
+
7b0843e
+
b9f38cc
+
53d4205
+
0ba91ba
+
7ad75c4
+
35376fd
+
e6713be
+
b15c871
+
4121ed2
+
905626d
+
529973a
+
e28e80a
+
b64275a
+
2f43075
+
05dea5f
+
b0f56ea
+
a0ae2ac
+
8b01bd8
+
fc7acfc
+
87b1ffc
+
c00475b
+
6d05c34
+
2f2787b
+
229c668
+
c164e00
+
e5c1ff6
+
5023ed3
+
3c689b8
+
789b92c
+
ae927c2
+
7741eac
+
ab3bdcd
+
6c02989
+
0d17da2
+
1035d13
+
b31816b
+
a5555a3
+
a2b81c6
+
5711b49
+
db8e36b
+
9a865bc
+
27420a4
+
2e7e46b
+
f51e1ec
+
e6b286e
+
d5c10b6
+
0eabc04
+
fed2583
+
af2d845
+
0102405
+
84330e4
+
50b28a7
+
196892e
+
55ecf0a
+
cdf2159
+
97a5f0f
+
2951d73
+
bbfc15c
+
7aff06a
+
2ec87c8
+
9fd7105
+
090f966
+
295dff4
+
d43b026
+
827fd02
+
5559cd9
+
cfb3de6
+
80fffc8
+
de4b8d7
+
2ea29b0
+
a6ce4d3
+
90c9a60
+
738f604
+
ae8477a
+
1fc523b
commit 7f8830e
Showing
2 changed files
with
147 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
<?php | ||
/** | ||
* Zend Framework (http://framework.zend.com/) | ||
* | ||
* @link http://github.com/zendframework/zf2 for the canonical source repository | ||
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) | ||
* @license http://framework.zend.com/license/new-bsd New BSD License | ||
*/ | ||
|
||
namespace Zend\Navigation\Service; | ||
|
||
use Zend\Navigation\Navigation; | ||
use Zend\ServiceManager\AbstractFactoryInterface; | ||
use Zend\ServiceManager\ServiceLocatorInterface; | ||
|
||
/** | ||
* Navigation abstract service factory | ||
* | ||
* Allows configuring several navigation instances. If you have a navigation config key named "special" then you can | ||
* use $serviceLocator->get('Zend\Navigation\Special') to retrieve a navigation instance with this configuration. | ||
*/ | ||
final class NavigationAbstractServiceFactory implements AbstractFactoryInterface | ||
{ | ||
/** | ||
* Top-level configuration key indicating navigation configuration | ||
* | ||
* @var string | ||
*/ | ||
const CONFIG_KEY = 'navigation'; | ||
|
||
/** | ||
* Service manager factory prefix | ||
* | ||
* @var string | ||
*/ | ||
const SERVICE_PREFIX = 'Zend\Navigation\\'; | ||
|
||
/** | ||
* Normalized name prefix | ||
*/ | ||
const NAME_PREFIX = 'zendnavigation'; | ||
|
||
/** | ||
* Navigation configuration | ||
* | ||
* @var array | ||
*/ | ||
protected $config; | ||
|
||
/** | ||
* Can we create a navigation by the requested name? | ||
* | ||
* @param ServiceLocatorInterface $serviceLocator | ||
* @param string $name Service name (as resolved by ServiceManager) | ||
* @param string $requestedName Name by which service was requested, must start with Zend\Navigation\ | ||
* @return bool | ||
*/ | ||
public function canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName) | ||
{ | ||
if (0 !== strpos($name, self::NAME_PREFIX)) { | ||
return false; | ||
} | ||
$config = $this->getConfig($serviceLocator); | ||
|
||
return (!empty($config[$this->getConfigName($name)])); | ||
} | ||
|
||
/** | ||
* Create a navigation container | ||
* | ||
* @param ServiceLocatorInterface $serviceLocator | ||
* @param string $name Service name (as resolved by ServiceManager) | ||
* @param string $requestedName Name by which service was requested | ||
* @return Navigation | ||
*/ | ||
public function createServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName) | ||
{ | ||
$config = $this->getConfig($serviceLocator); | ||
$factory = new ConstructedNavigationFactory($config[$this->getConfigName($name)]); | ||
return $factory->createService($serviceLocator); | ||
} | ||
|
||
/** | ||
* Get navigation configuration, if any | ||
* | ||
* @param ServiceLocatorInterface $services | ||
* @return array | ||
*/ | ||
protected function getConfig(ServiceLocatorInterface $services) | ||
{ | ||
if ($this->config !== null) { | ||
return $this->config; | ||
} | ||
|
||
if (!$services->has('Config')) { | ||
$this->config = array(); | ||
return $this->config; | ||
} | ||
|
||
$config = $services->get('Config'); | ||
if (!isset($config[self::CONFIG_KEY]) | ||
|| !is_array($config[self::CONFIG_KEY]) | ||
) { | ||
$this->config = array(); | ||
return $this->config; | ||
} | ||
|
||
$this->config = $config[self::CONFIG_KEY]; | ||
return $this->config; | ||
} | ||
|
||
/** | ||
* Extract config name from service name | ||
* | ||
* @param string $name | ||
* @return string | ||
*/ | ||
protected function getConfigName($name) | ||
{ | ||
return substr($name, strlen(self::NAME_PREFIX)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters