관리-도구
편집 파일: Config.tar
FileLocator.php 0000604 00000002717 15224655627 0007501 0 ustar 00 <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Config; use Symfony\Component\Config\FileLocator as BaseFileLocator; use Symfony\Component\HttpKernel\KernelInterface; /** * FileLocator uses the KernelInterface to locate resources in bundles. * * @author Fabien Potencier <fabien@symfony.com> */ class FileLocator extends BaseFileLocator { private $kernel; private $path; /** * Constructor. * * @param KernelInterface $kernel A KernelInterface instance * @param null|string $path The path the global resource directory * @param array $paths An array of paths where to look for resources */ public function __construct(KernelInterface $kernel, $path = null, array $paths = array()) { $this->kernel = $kernel; if (null !== $path) { $this->path = $path; $paths[] = $path; } parent::__construct($paths); } /** * {@inheritdoc} */ public function locate($file, $currentPath = null, $first = true) { if (isset($file[0]) && '@' === $file[0]) { return $this->kernel->locateResource($file, $this->path, $first); } return parent::locate($file, $currentPath, $first); } } EnvParametersResourceTest.php 0000604 00000005331 15224665355 0012414 0 ustar 00 <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Tests\Config; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpKernel\Config\EnvParametersResource; class EnvParametersResourceTest extends TestCase { protected $prefix = '__DUMMY_'; protected $initialEnv; protected $resource; protected function setUp() { $this->initialEnv = array( $this->prefix.'1' => 'foo', $this->prefix.'2' => 'bar', ); foreach ($this->initialEnv as $key => $value) { $_SERVER[$key] = $value; } $this->resource = new EnvParametersResource($this->prefix); } protected function tearDown() { foreach ($_SERVER as $key => $value) { if (0 === strpos($key, $this->prefix)) { unset($_SERVER[$key]); } } } public function testGetResource() { $this->assertSame( array('prefix' => $this->prefix, 'variables' => $this->initialEnv), $this->resource->getResource(), '->getResource() returns the resource' ); } public function testToString() { $this->assertSame( serialize(array('prefix' => $this->prefix, 'variables' => $this->initialEnv)), (string) $this->resource ); } public function testIsFreshNotChanged() { $this->assertTrue( $this->resource->isFresh(time()), '->isFresh() returns true if the variables have not changed' ); } public function testIsFreshValueChanged() { reset($this->initialEnv); $_SERVER[key($this->initialEnv)] = 'baz'; $this->assertFalse( $this->resource->isFresh(time()), '->isFresh() returns false if a variable has been changed' ); } public function testIsFreshValueRemoved() { reset($this->initialEnv); unset($_SERVER[key($this->initialEnv)]); $this->assertFalse( $this->resource->isFresh(time()), '->isFresh() returns false if a variable has been removed' ); } public function testIsFreshValueAdded() { $_SERVER[$this->prefix.'3'] = 'foo'; $this->assertFalse( $this->resource->isFresh(time()), '->isFresh() returns false if a variable has been added' ); } public function testSerializeUnserialize() { $this->assertEquals($this->resource, unserialize(serialize($this->resource))); } } FileLocatorTest.php 0000604 00000003167 15224665355 0010340 0 ustar 00 <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Tests\Config; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpKernel\Config\FileLocator; class FileLocatorTest extends TestCase { public function testLocate() { $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\KernelInterface')->getMock(); $kernel ->expects($this->atLeastOnce()) ->method('locateResource') ->with('@BundleName/some/path', null, true) ->will($this->returnValue('/bundle-name/some/path')); $locator = new FileLocator($kernel); $this->assertEquals('/bundle-name/some/path', $locator->locate('@BundleName/some/path')); $kernel ->expects($this->never()) ->method('locateResource'); $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('LogicException'); $locator->locate('/some/path'); } public function testLocateWithGlobalResourcePath() { $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\KernelInterface')->getMock(); $kernel ->expects($this->atLeastOnce()) ->method('locateResource') ->with('@BundleName/some/path', '/global/resource/path', false); $locator = new FileLocator($kernel, '/global/resource/path'); $locator->locate('@BundleName/some/path', null, false); } } EnvParametersResource.php 0000604 00000004406 15224676054 0011554 0 ustar 00 <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Config; use Symfony\Component\Config\Resource\SelfCheckingResourceInterface; /** * EnvParametersResource represents resources stored in prefixed environment variables. * * @author Chris Wilkinson <chriswilkinson84@gmail.com> */ class EnvParametersResource implements SelfCheckingResourceInterface, \Serializable { /** * @var string */ private $prefix; /** * @var string */ private $variables; /** * Constructor. * * @param string $prefix */ public function __construct($prefix) { $this->prefix = $prefix; $this->variables = $this->findVariables(); } /** * {@inheritdoc} */ public function __toString() { return serialize($this->getResource()); } /** * @return array An array with two keys: 'prefix' for the prefix used and 'variables' containing all the variables watched by this resource */ public function getResource() { return array('prefix' => $this->prefix, 'variables' => $this->variables); } /** * {@inheritdoc} */ public function isFresh($timestamp) { return $this->findVariables() === $this->variables; } public function serialize() { return serialize(array('prefix' => $this->prefix, 'variables' => $this->variables)); } public function unserialize($serialized) { if (\PHP_VERSION_ID >= 70000) { $unserialized = unserialize($serialized, array('allowed_classes' => false)); } else { $unserialized = unserialize($serialized); } $this->prefix = $unserialized['prefix']; $this->variables = $unserialized['variables']; } private function findVariables() { $variables = array(); foreach ($_SERVER as $key => $value) { if (0 === strpos($key, $this->prefix)) { $variables[$key] = $value; } } ksort($variables); return $variables; } }