Compare commits

..

22 Commits
v2.4.1 ... 2.4

Author SHA1 Message Date
Fabien Potencier
238ae4bc48 Merge branch '2.3' into 2.4
* 2.3:
  fixed CS
  [Process] fixed some volatile tests
  [HttpKernel] fixed a volatile test
  [HttpFoundation] fixed some volatile tests
  Use getPathname() instead of string casting to get BinaryFileReponse file path

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Command/ConfigDumpReferenceCommand.php
	src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
	src/Symfony/Bundle/FrameworkBundle/EventListener/SessionListener.php
	src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php
	src/Symfony/Component/ClassLoader/Tests/ApcUniversalClassLoaderTest.php
	src/Symfony/Component/Config/Definition/ReferenceDumper.php
	src/Symfony/Component/Config/Tests/Definition/Dumper/YamlReferenceDumperTest.php
	src/Symfony/Component/Console/Application.php
	src/Symfony/Component/Console/Tests/ApplicationTest.php
	src/Symfony/Component/Filesystem/Exception/IOException.php
	src/Symfony/Component/Form/Extension/Templating/TemplatingExtension.php
	src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/NumberToLocalizedStringTransformerTest.php
	src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php
	src/Symfony/Component/HttpKernel/Tests/Bundle/BundleTest.php
	src/Symfony/Component/HttpKernel/Tests/Fragment/RoutableFragmentRendererTest.php
	src/Symfony/Component/HttpKernel/Tests/Profiler/Mock/RedisMock.php
	src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php
	src/Symfony/Component/PropertyAccess/PropertyAccessor.php
	src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorCollectionTest.php
	src/Symfony/Component/PropertyAccess/Tests/PropertyAccessorTest.php
	src/Symfony/Component/Routing/Matcher/Dumper/ApacheMatcherDumper.php
	src/Symfony/Component/Routing/Tests/Annotation/RouteTest.php
	src/Symfony/Component/Routing/Tests/Loader/AnnotationClassLoaderTest.php
	src/Symfony/Component/Serializer/Encoder/XmlEncoder.php
	src/Symfony/Component/Validator/Constraints/CollectionValidator.php
	src/Symfony/Component/Validator/Tests/ExecutionContextTest.php
2014-09-22 10:51:05 +02:00
Fabien Potencier
39a9bc391d fixed CS 2014-09-22 10:32:35 +02:00
Fabien Potencier
85279de007 Merge branch '2.3' into 2.4
* 2.3:
  [HttpKernel] add use statement for phpdoc
  Disabled the PHPUnit self-update on Travis
  [ClassLoader] simplified phpdoc
  [ClassLoader] Add a __call() method to XcacheClassLoader
  fix some minor typos in tests
  [Yaml] fixed mapping keys containing a quoted #
  Added fixture to test parsing of hash keys ending with a space and #
  [Filesystem Component] mkdir race condition fix #11626
  [Validator] reverted permissions change on translation files
  Fixed Factory services not within the ServiceReferenceGraph.
  [CssSelector] Fix URL to SimonSapin/cssselect repo
  [Validator] Fixed wrong translation keys/messages for Collection constraint. The error messages for a missing field and an unexpected field did not match the Contraint class
  [YAML] resolve variables in inlined YAML
  Disallow abstract definitions from doctrine event listener registration

Conflicts:
	src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php
	src/Symfony/Bridge/Doctrine/Tests/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPassTest.php
	src/Symfony/Bundle/FrameworkBundle/EventListener/SessionListener.php
	src/Symfony/Component/Filesystem/Filesystem.php
2014-08-31 05:18:18 +02:00
Fabien Potencier
d3b0938fa2 [ClassLoader] simplified phpdoc 2014-08-28 16:35:12 +02:00
Tobias Stöckler
3acea26b17 [ClassLoader] Add a __call() method to XcacheClassLoader 2014-08-28 16:33:42 +02:00
Fabien Potencier
94b18e1beb Merge branch '2.3' into 2.4
* 2.3:
  fixed CS
  [HttpFoundation] Remove content-related headers if content is empty
  removed defaults from PHPUnit configuration
2014-07-09 11:04:55 +02:00
Fabien Potencier
fea82e505d Merge branch '2.3' into 2.4
* 2.3:
  bumped Symfony version to 2.3.18
  updated VERSION for 2.3.17
  update CONTRIBUTORS for 2.3.17
  updated CHANGELOG for 2.3.17
  added XSD to PHPUnit configuration
  bug #11319 [HttpKernel] Ensure the storage exists before purging it in ProfilerTest
  [Translation] Added unescaping of ids in PoFileLoader
  updated italian translation for validation messages
  [DomCrawler] Fix docblocks and formatting.
  [DomCrawler] Remove the query string and the anchor of the uri of a link
  Simplified the Travis test command
  [Console] Make sure formatter is the same

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
2014-07-08 13:46:35 +02:00
Christian Raue
732b31a9fe removed defaults from PHPUnit configuration 2014-07-07 12:13:42 +02:00
Christian Raue
afb83252cb added XSD to PHPUnit configuration 2014-07-07 11:57:21 +02:00
Fabien Potencier
083ae606f0 Merge branch '2.3' into 2.4
* 2.3:
  Fixed failed config schema loads due to libxml_disable_entity_loader usage.
  enabled PHP 5.6 for tests
  [Process] Fix ExecutableFinder with open basedir
  Refactored the CssSelector to remove the circular object graph
  Fix mocks to support >=5.5.14 and >=5.4.30
  [ClassLoader] fixed PHP warning on PHP 5.3
  [Components][Serializer] optional constructor arguments can be omitted during the denormalization process
  [DomCrawler] properly handle buttons with single and double quotes inside the name attribute

Conflicts:
	src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php
2014-07-01 08:40:32 +02:00
Fabien Potencier
b321e4830b [ClassLoader] fixed PHP warning on PHP 5.3 2014-06-26 10:33:01 +02:00
Fabien Potencier
5101f30949 Merge branch '2.3' into 2.4
* 2.3:
  fixed types in phpdocs

Conflicts:
	src/Symfony/Bridge/Twig/TwigEngine.php
	src/Symfony/Bundle/FrameworkBundle/Templating/Loader/FilesystemLoader.php
	src/Symfony/Component/Filesystem/Tests/FilesystemTest.php
	src/Symfony/Component/Form/Extension/Core/ChoiceList/SimpleChoiceList.php
	src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php
	src/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php
	src/Symfony/Component/PropertyAccess/PropertyAccessorBuilder.php
	src/Symfony/Component/Serializer/Encoder/XmlEncoder.php
	src/Symfony/Component/Stopwatch/StopwatchEvent.php
	src/Symfony/Component/Templating/PhpEngine.php
2014-04-16 12:34:31 +02:00
Fabien Potencier
343414e2a5 fixed types in phpdocs 2014-04-16 12:30:19 +02:00
Fabien Potencier
87cc2d71d1 Merge branch '2.3' into 2.4
* 2.3:
  made {@inheritdoc} annotations consistent across the board
  fixed types in phpdocs
  made phpdoc types consistent with those defined in Hack
  Add support Thai translations
  made types consistent with those defined in Hack
  removed extra/unsupported arguments
  [HttpKernel] fixed an error message
  [TwigBundle] removed undefined argument
  [Translation] Make IcuDatFileLoader/IcuResFileLoader::load invalid resource compatible with HHVM.

Conflicts:
	src/Symfony/Bridge/ProxyManager/Tests/LazyProxy/Fixtures/php/lazy_service.php
	src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
	src/Symfony/Bundle/FrameworkBundle/Templating/Loader/FilesystemLoader.php
	src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
	src/Symfony/Component/Config/Definition/ReferenceDumper.php
	src/Symfony/Component/Console/Helper/DescriptorHelper.php
	src/Symfony/Component/Debug/ErrorHandler.php
	src/Symfony/Component/Finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php
	src/Symfony/Component/Form/Extension/Core/DataTransformer/IntegerToLocalizedStringTransformer.php
	src/Symfony/Component/Form/Tests/Extension/Core/DataMapper/PropertyPathMapperTest.php
	src/Symfony/Component/HttpFoundation/Response.php
	src/Symfony/Component/HttpFoundation/StreamedResponse.php
	src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php
	src/Symfony/Component/HttpKernel/EventListener/ProfilerListener.php
	src/Symfony/Component/HttpKernel/Fragment/FragmentHandler.php
	src/Symfony/Component/HttpKernel/Fragment/RoutableFragmentRenderer.php
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/HttpKernel/Tests/Fixtures/KernelForTest.php
	src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php
	src/Symfony/Component/Security/Core/Authorization/AccessDecisionManager.php
	src/Symfony/Component/Stopwatch/StopwatchPeriod.php
	src/Symfony/Component/Translation/TranslatorInterface.php
	src/Symfony/Component/Validator/ConstraintValidatorFactory.php
2014-04-16 10:02:57 +02:00
Fabien Potencier
e971e40b45 made {@inheritdoc} annotations consistent across the board 2014-04-16 09:04:20 +02:00
Fabien Potencier
dd8c297b91 made phpdoc types consistent with those defined in Hack 2014-04-15 07:41:45 +02:00
Fabien Potencier
26de2f175f made types consistent with those defined in Hack 2014-04-13 20:00:14 +02:00
Ioan Negulescu
142de518bf Fix class names in ApcUniversalClassLoader tests. 2014-03-29 07:58:16 +01:00
Fabien Potencier
d36352a610 Merge branch '2.3' into 2.4
* 2.3:
  fixed various inconsistencies
  reduced recursion when building DumperPrefixCollection
  renamed variables - making next change more readable
  removing dead code.
  [DomCrawler] Fixed filterXPath() chaining
  [DomCrawler] Fixed incorrect handling of image inputs

Conflicts:
	src/Symfony/Component/DomCrawler/Crawler.php
	src/Symfony/Component/EventDispatcher/Tests/EventDispatcherTest.php
	src/Symfony/Component/Form/Extension/DependencyInjection/DependencyInjectionExtension.php
	src/Symfony/Component/Serializer/Tests/Normalizer/CustomNormalizerTest.php
	src/Symfony/Component/Templating/Tests/Loader/CacheLoaderTest.php
	src/Symfony/Component/Templating/Tests/Loader/LoaderTest.php
2014-02-11 14:52:09 +01:00
Fabien Potencier
8a70d1963f fixed various inconsistencies 2014-02-11 11:29:24 +01:00
Fabien Potencier
d66d7e54a0 Merge branch '2.3' into 2.4
* 2.3:
  update year on licenses
  rundown and typo fix
  [Process] Fix #9861 : Revert TTY mode
  [Form] Update minimal requirement in composer.json
  Fix Empty translations with Qt files
  Update UPGRADE-2.3.md to account for #9388

Conflicts:
	src/Symfony/Component/Validator/Tests/Constraints/LessThanValidatorTest.php
2014-01-07 14:28:54 +01:00
Luis Cordova
18d1b5e575 update year on licenses 2014-01-07 08:19:25 -05:00
23 changed files with 102 additions and 77 deletions

View File

@@ -15,7 +15,7 @@ namespace Symfony\Component\ClassLoader;
* ApcClassLoader implements a wrapping autoloader cached in APC for PHP 5.3.
*
* It expects an object implementing a findFile method to find the file. This
* allow using it as a wrapper around the other loaders of the component (the
* allows using it as a wrapper around the other loaders of the component (the
* ClassLoader and the UniversalClassLoader for instance) but also around any
* other autoloader following this convention (the Composer one for instance)
*
@@ -46,7 +46,7 @@ class ApcClassLoader
/**
* The class loader object being decorated.
*
* @var \Symfony\Component\ClassLoader\ClassLoader
* @var object
* A class loader object that implements the findFile() method.
*/
protected $decorated;
@@ -79,7 +79,7 @@ class ApcClassLoader
/**
* Registers this instance as an autoloader.
*
* @param Boolean $prepend Whether to prepend the autoloader or not
* @param bool $prepend Whether to prepend the autoloader or not
*/
public function register($prepend = false)
{
@@ -99,7 +99,7 @@ class ApcClassLoader
*
* @param string $class The name of the class
*
* @return Boolean|null True, if loaded
* @return bool|null True, if loaded
*/
public function loadClass($class)
{
@@ -133,5 +133,4 @@ class ApcClassLoader
{
return call_user_func_array(array($this->decorated, $method), $args);
}
}

View File

@@ -28,8 +28,8 @@ class ClassCollectionLoader
* @param array $classes An array of classes to load
* @param string $cacheDir A cache directory
* @param string $name The cache name prefix
* @param Boolean $autoReload Whether to flush the cache when the cache is stale or not
* @param Boolean $adaptive Whether to remove already declared classes or not
* @param bool $autoReload Whether to flush the cache when the cache is stale or not
* @param bool $adaptive Whether to remove already declared classes or not
* @param string $extension File extension of the resulting file
*
* @throws \InvalidArgumentException When class can't be loaded
@@ -200,7 +200,7 @@ class ClassCollectionLoader
*/
public static function enableTokenizer($bool)
{
self::$useTokenizer = (Boolean) $bool;
self::$useTokenizer = (bool) $bool;
}
/**

View File

@@ -103,7 +103,7 @@ class ClassLoader
/**
* Turns on searching the include for class files.
*
* @param Boolean $useIncludePath
* @param bool $useIncludePath
*/
public function setUseIncludePath($useIncludePath)
{
@@ -114,7 +114,7 @@ class ClassLoader
* Can be used to check if the autoloader uses the include path to check
* for classes.
*
* @return Boolean
* @return bool
*/
public function getUseIncludePath()
{
@@ -124,7 +124,7 @@ class ClassLoader
/**
* Registers this instance as an autoloader.
*
* @param Boolean $prepend Whether to prepend the autoloader or not
* @param bool $prepend Whether to prepend the autoloader or not
*/
public function register($prepend = false)
{
@@ -144,7 +144,7 @@ class ClassLoader
*
* @param string $class The name of the class
*
* @return Boolean|null True, if loaded
* @return bool|null True, if loaded
*/
public function loadClass($class)
{

View File

@@ -11,6 +11,10 @@
namespace Symfony\Component\ClassLoader;
if (!defined('T_TRAIT')) {
define('T_TRAIT', 0);
}
/**
* ClassMapGenerator
*
@@ -67,7 +71,6 @@ class ClassMapGenerator
foreach ($classes as $class) {
$map[$class] = $path;
}
}
return $map;
@@ -84,7 +87,6 @@ class ClassMapGenerator
{
$contents = file_get_contents($path);
$tokens = token_get_all($contents);
$T_TRAIT = version_compare(PHP_VERSION, '5.4', '<') ? -1 : T_TRAIT;
$classes = array();
@@ -111,7 +113,7 @@ class ClassMapGenerator
break;
case T_CLASS:
case T_INTERFACE:
case $T_TRAIT:
case T_TRAIT:
// Find the classname
while (($t = $tokens[++$i]) && is_array($t)) {
if (T_STRING === $t[0]) {

View File

@@ -98,7 +98,7 @@ class DebugClassLoader
*
* @param string $class The name of the class
*
* @return Boolean|null True, if loaded
* @return bool|null True, if loaded
*
* @throws \RuntimeException
*/

View File

@@ -48,7 +48,7 @@ class DebugUniversalClassLoader extends UniversalClassLoader
}
/**
* {@inheritDoc}
* {@inheritdoc}
*/
public function loadClass($class)
{

View File

@@ -1,4 +1,4 @@
Copyright (c) 2004-2013 Fabien Potencier
Copyright (c) 2004-2014 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -33,7 +33,7 @@ class MapClassLoader
/**
* Registers this instance as an autoloader.
*
* @param Boolean $prepend Whether to prepend the autoloader or not
* @param bool $prepend Whether to prepend the autoloader or not
*/
public function register($prepend = false)
{

View File

@@ -55,15 +55,15 @@ class ApcUniversalClassLoaderTest extends \PHPUnit_Framework_TestCase
$this->assertTrue(class_exists($className), $message);
}
public function getLoadClassTests()
{
return array(
public function getLoadClassTests()
{
return array(
array('\\Apc\\Namespaced\\Foo', '\\Apc\\Namespaced\\Foo', '->loadClass() loads Apc\Namespaced\Foo class'),
array('Apc_Pearlike_Foo', 'Apc_Pearlike_Foo', '->loadClass() loads Apc_Pearlike_Foo class'),
array('\\Apc\\Namespaced\\Bar', '\\Apc\\Namespaced\\Bar', '->loadClass() loads Apc\Namespaced\Bar class with a leading slash'),
array('Apc_Pearlike_Bar', '\\Apc_Pearlike_Bar', '->loadClass() loads Apc_Pearlike_Bar class with a leading slash'),
);
}
}
/**
* @dataProvider getLoadClassFromFallbackTests
@@ -79,15 +79,15 @@ class ApcUniversalClassLoaderTest extends \PHPUnit_Framework_TestCase
$this->assertTrue(class_exists($className), $message);
}
public function getLoadClassFromFallbackTests()
{
return array(
public function getLoadClassFromFallbackTests()
{
return array(
array('\\Apc\\Namespaced\\Baz', '\\Apc\\Namespaced\\Baz', '->loadClass() loads Apc\Namespaced\Baz class'),
array('Apc_Pearlike_Baz', 'Apc_Pearlike_Baz', '->loadClass() loads Apc_Pearlike_Baz class'),
array('\\Apc\\Namespaced\\FooBar', '\\Apc\\Namespaced\\FooBar', '->loadClass() loads Apc\Namespaced\Baz class from fallback dir'),
array('Apc_Pearlike_FooBar', 'Apc_Pearlike_FooBar', '->loadClass() loads Apc_Pearlike_Baz class from fallback dir'),
);
}
}
/**
* @dataProvider getLoadClassNamespaceCollisionTests
@@ -102,9 +102,9 @@ class ApcUniversalClassLoaderTest extends \PHPUnit_Framework_TestCase
$this->assertTrue(class_exists($className), $message);
}
public function getLoadClassNamespaceCollisionTests()
{
return array(
public function getLoadClassNamespaceCollisionTests()
{
return array(
array(
array(
'Apc\\NamespaceCollision\\A' => __DIR__.DIRECTORY_SEPARATOR.'Fixtures/Apc/alpha',
@@ -138,7 +138,7 @@ class ApcUniversalClassLoaderTest extends \PHPUnit_Framework_TestCase
'->loadClass() loads NamespaceCollision\A\B\Bar from beta.',
),
);
}
}
/**
* @dataProvider getLoadClassPrefixCollisionTests
@@ -152,9 +152,9 @@ class ApcUniversalClassLoaderTest extends \PHPUnit_Framework_TestCase
$this->assertTrue(class_exists($className), $message);
}
public function getLoadClassPrefixCollisionTests()
{
return array(
public function getLoadClassPrefixCollisionTests()
{
return array(
array(
array(
'ApcPrefixCollision_A_' => __DIR__.DIRECTORY_SEPARATOR.'Fixtures/Apc/alpha/Apc',
@@ -188,5 +188,5 @@ class ApcUniversalClassLoaderTest extends \PHPUnit_Framework_TestCase
'->loadClass() loads ApcPrefixCollision_A_B_Bar from beta.',
),
);
}
}
}

View File

@@ -76,7 +76,7 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase
'Namespaced\\Foo' => realpath(__DIR__).'/Fixtures/Namespaced/Foo.php',
'Namespaced\\Baz' => realpath(__DIR__).'/Fixtures/Namespaced/Baz.php',
'Namespaced\\WithComments' => realpath(__DIR__).'/Fixtures/Namespaced/WithComments.php',
)
),
),
array(__DIR__.'/Fixtures/beta/NamespaceCollision', array(
'NamespaceCollision\\A\\B\\Bar' => realpath(__DIR__).'/Fixtures/beta/NamespaceCollision/A/B/Bar.php',

View File

@@ -2,4 +2,6 @@
namespace ClassesWithParents;
class A extends B {}
class A extends B
{
}

View File

@@ -2,4 +2,6 @@
namespace ClassesWithParents;
class B implements CInterface {}
class B implements CInterface
{
}

View File

@@ -13,5 +13,4 @@ namespace ClassMap;
class SomeClass extends SomeParent implements SomeInterface
{
}

View File

@@ -13,5 +13,4 @@ namespace ClassMap;
interface SomeInterface
{
}

View File

@@ -13,5 +13,4 @@ namespace ClassMap;
abstract class SomeParent
{
}

View File

@@ -1,14 +1,24 @@
<?php
namespace {
class A {}
class A
{
}
}
namespace Alpha {
class A {}
class B {}
class A
{
}
class B
{
}
}
namespace Beta {
class A {}
class B {}
class A
{
}
class B
{
}
}

View File

@@ -11,5 +11,9 @@
namespace Foo\Bar;
class A {}
class B {}
class A
{
}
class B
{
}

View File

@@ -1,7 +1,8 @@
<?php
trait TD
{}
{
}
trait TZ
{

View File

@@ -25,6 +25,7 @@ namespace Foo {
class CBar implements IBar
{
use TBar, TFooBar;
use TBar;
use TFooBar;
}
}

View File

@@ -70,7 +70,7 @@ class UniversalClassLoader
* Turns on searching the include for class files. Allows easy loading
* of installed PEAR packages
*
* @param Boolean $useIncludePath
* @param bool $useIncludePath
*/
public function useIncludePath($useIncludePath)
{
@@ -81,7 +81,7 @@ class UniversalClassLoader
* Can be used to check if the autoloader uses the include path to check
* for classes.
*
* @return Boolean
* @return bool
*/
public function getUseIncludePath()
{
@@ -229,7 +229,7 @@ class UniversalClassLoader
/**
* Registers this instance as an autoloader.
*
* @param Boolean $prepend Whether to prepend the autoloader or not
* @param bool $prepend Whether to prepend the autoloader or not
*
* @api
*/
@@ -243,7 +243,7 @@ class UniversalClassLoader
*
* @param string $class The name of the class
*
* @return Boolean|null True, if loaded
* @return bool|null True, if loaded
*/
public function loadClass($class)
{
@@ -287,7 +287,6 @@ class UniversalClassLoader
return $file;
}
}
} else {
// PEAR-like class name
$normalizedClass = str_replace('_', DIRECTORY_SEPARATOR, $class).'.php';

View File

@@ -76,7 +76,7 @@ class WinCacheClassLoader
/**
* Registers this instance as an autoloader.
*
* @param Boolean $prepend Whether to prepend the autoloader or not
* @param bool $prepend Whether to prepend the autoloader or not
*/
public function register($prepend = false)
{
@@ -96,7 +96,7 @@ class WinCacheClassLoader
*
* @param string $class The name of the class
*
* @return Boolean|null True, if loaded
* @return bool|null True, if loaded
*/
public function loadClass($class)
{

View File

@@ -12,7 +12,7 @@
namespace Symfony\Component\ClassLoader;
/**
* XcacheClassLoader implements a wrapping autoloader cached in Xcache for PHP 5.3.
* XcacheClassLoader implements a wrapping autoloader cached in XCache for PHP 5.3.
*
* It expects an object implementing a findFile method to find the file. This
* allows using it as a wrapper around the other loaders of the component (the
@@ -43,37 +43,41 @@ namespace Symfony\Component\ClassLoader;
class XcacheClassLoader
{
private $prefix;
private $classFinder;
/**
* @var object A class loader object that implements the findFile() method
*/
private $decorated;
/**
* Constructor.
*
* @param string $prefix A prefix to create a namespace in Xcache
* @param object $classFinder An object that implements findFile() method.
* @param string $prefix The XCache namespace prefix to use.
* @param object $decorated A class loader object that implements the findFile() method.
*
* @throws \RuntimeException
* @throws \InvalidArgumentException
*
* @api
*/
public function __construct($prefix, $classFinder)
public function __construct($prefix, $decorated)
{
if (!extension_loaded('Xcache')) {
throw new \RuntimeException('Unable to use XcacheClassLoader as Xcache is not enabled.');
if (!extension_loaded('xcache')) {
throw new \RuntimeException('Unable to use XcacheClassLoader as XCache is not enabled.');
}
if (!method_exists($classFinder, 'findFile')) {
if (!method_exists($decorated, 'findFile')) {
throw new \InvalidArgumentException('The class finder must implement a "findFile" method.');
}
$this->prefix = $prefix;
$this->classFinder = $classFinder;
$this->decorated = $decorated;
}
/**
* Registers this instance as an autoloader.
*
* @param Boolean $prepend Whether to prepend the autoloader or not
* @param bool $prepend Whether to prepend the autoloader or not
*/
public function register($prepend = false)
{
@@ -93,7 +97,7 @@ class XcacheClassLoader
*
* @param string $class The name of the class
*
* @return Boolean|null True, if loaded
* @return bool|null True, if loaded
*/
public function loadClass($class)
{
@@ -116,9 +120,18 @@ class XcacheClassLoader
if (xcache_isset($this->prefix.$class)) {
$file = xcache_get($this->prefix.$class);
} else {
xcache_set($this->prefix.$class, $file = $this->classFinder->findFile($class));
$file = $this->decorated->findFile($class);
xcache_set($this->prefix.$class, $file);
}
return $file;
}
/**
* Passes through all unknown calls onto the decorated object.
*/
public function __call($method, $args)
{
return call_user_func_array(array($this->decorated, $method), $args);
}
}

View File

@@ -1,14 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
backupGlobals="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
bootstrap="vendor/autoload.php"
>
<testsuites>