for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace PHPRealCoverage\Proxy;
class ProxyFactory
{
private $classes;
private $proxies = array();
/**
* @param ClassMetadata[] $classes
*/
public function __construct(array $classes)
$this->createClassHashMap($classes);
}
public function supports($classname)
return isset($this->classes[$classname]);
private function createClassHashMap(array $classes)
$this->classes = array();
foreach ($classes as $class) {
$this->classes[$this->getFullQualifiedClassName($class)] = $class;
* @param ClassMetadata $class
* @return string
private function getFullQualifiedClassName(ClassMetadata $class)
return '\\' . $class->getNamespace() . '\\' . $class->getName();
public function getProxyForName($classname)
if (!$this->supports($classname)) {
throw new UnsupportedClassException("Class " . $classname . " not found");
if (!isset($this->proxies[$classname])) {
$proxy = new ProxyAccessor($this->classes[$classname]);
$proxy->load();
$this->proxies[$classname] = $proxy;
return $this->proxies[$classname];
* @return ProxyAccessor
public function getProxy(ClassMetadata $class)
return $this->getProxyForName($this->getFullQualifiedClassName($class));