1 | <?php |
||
19 | class ProxyFactory |
||
20 | { |
||
21 | /** |
||
22 | * @type string |
||
23 | */ |
||
24 | private $proxyDirectory; |
||
25 | |||
26 | /** |
||
27 | * @param string $proxyDirectory |
||
28 | */ |
||
29 | 1 | public function __construct($proxyDirectory) |
|
33 | |||
34 | /** |
||
35 | * Create a proxy that handles data collecting better. |
||
36 | * |
||
37 | * @param string $class |
||
38 | * @param string &$proxyFile where we store the proxy class |
||
39 | * |
||
40 | * @return string the name of a much much better class |
||
41 | */ |
||
42 | 1 | public function createProxy($class, &$proxyFile = null) |
|
43 | { |
||
44 | 1 | $proxyClass = $this->getProxyClass($class); |
|
45 | 1 | $class = '\\'.rtrim($class, '\\'); |
|
46 | 1 | $proxyFile = $this->proxyDirectory.'/'.$proxyClass.'.php'; |
|
47 | |||
48 | 1 | if (class_exists($proxyClass)) { |
|
49 | return $proxyClass; |
||
50 | } |
||
51 | |||
52 | 1 | if (file_exists($proxyFile)) { |
|
53 | require $proxyFile; |
||
54 | |||
55 | return $proxyClass; |
||
56 | } |
||
57 | |||
58 | 1 | $content = file_get_contents(dirname(__DIR__).'/Resources/proxy/template.php'); |
|
59 | 1 | $content = str_replace('__TPL_CLASS__', $proxyClass, $content); |
|
60 | 1 | $content = str_replace('__TPL_EXTENDS__', $class, $content); |
|
61 | |||
62 | 1 | $this->checkProxyDirectory(); |
|
63 | 1 | file_put_contents($proxyFile, $content); |
|
64 | 1 | require $proxyFile; |
|
65 | |||
66 | 1 | return $proxyClass; |
|
67 | } |
||
68 | |||
69 | 1 | private function checkProxyDirectory() |
|
75 | |||
76 | 1 | private function getProxyClass($namespace) |
|
80 | } |
||
81 |
If you suppress an error, we recommend checking for the error condition explicitly: