Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid constructor override #175

Merged
merged 99 commits into from
Dec 14, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
17c8eb1
Implementing a static constructor to avoid overriding an object's `__…
Ocramius Sep 27, 2014
f94ebf1
Using the static constructor in the `AccessInterceptorScopeLocalizer`…
Ocramius Sep 27, 2014
ec200ac
Implementing new static constructor in the `AccessInterceptorValueHol…
Ocramius Sep 27, 2014
1ffaf9c
Variable collision fix (`$instance` was a parameter and a local varia…
Ocramius Sep 27, 2014
59049d1
Using the new static proxy constructor where implemented
Ocramius Sep 27, 2014
28d73f0
Avoiding usage of `$this` in static context
Ocramius Sep 27, 2014
cf0f7cc
Implementing a static constructor for `AccessInterceptorValueHolder` …
Ocramius Sep 27, 2014
bc8b850
Fixed static constructor name (not `__construct`!)
Ocramius Sep 27, 2014
217840e
Adding the static constructor to generated code
Ocramius Sep 27, 2014
cfd117c
Static proxy constructor is public and static
Ocramius Sep 27, 2014
5fef9ff
Using the new static proxy constructor when available
Ocramius Sep 27, 2014
199cfd9
Built instance should be returned by the static constructor
Ocramius Sep 27, 2014
9d1d2ac
Built instance should be returned by the static constructor
Ocramius Sep 27, 2014
b33467c
Missing semicolon in generated code
Ocramius Sep 27, 2014
a1bf5ab
Mock should return the built instance when using the static constructor
Ocramius Sep 27, 2014
ea93303
Minor docblock fixes
Ocramius Sep 27, 2014
3166a17
Minor docblock fixes (missing `@return`)
Ocramius Sep 27, 2014
c3e9145
Typo fix causing massive codegen changes (`,` replaced by concatenati…
Ocramius Sep 27, 2014
31af1b2
Cannot bind a closure that was built in static context to an object, …
Ocramius Sep 27, 2014
bb5a152
On-the-fly generated classes don't need to re-implement method `#stat…
Ocramius Sep 27, 2014
4605d63
All tests should rely on the new static constructor of the access int…
Ocramius Sep 27, 2014
f06f1bf
Removing usage of the `__construct` override
Ocramius Sep 27, 2014
e93a368
Static constructors do not override any methods
Ocramius Sep 27, 2014
016863f
Implementing static proxy constructor for lazy loading objects
Ocramius Sep 27, 2014
d08695d
Using the newly implemented `StaticProxyConstructor` in the lazy load…
Ocramius Sep 27, 2014
ee046bc
Using the newly implemented `StaticProxyConstructor` in the lazy load…
Ocramius Sep 27, 2014
90f94d7
`staticProxyConstructor` must be static
Ocramius Sep 27, 2014
ee763d3
Implementing `staticProxyConstructor` for null objects
Ocramius Sep 27, 2014
f353cca
Variable name mismatch fix
Ocramius Sep 27, 2014
93160fa
Proxy test should only interact with non-static methods
Ocramius Sep 27, 2014
b57ad03
Using newly implemented static proxy constructor in codegen of null o…
Ocramius Sep 27, 2014
610ade0
Implementing static constructor for remote objects
Ocramius Sep 27, 2014
ae54f41
Using newly introduced static proxy constructor for remote objects in…
Ocramius Sep 27, 2014
5262aa0
Test stubs should implement the `staticProxyConstructor`
Ocramius Sep 27, 2014
d9b7709
Fixed broken assertion (was using `stdClass` instead of a proxy imple…
Ocramius Sep 27, 2014
894b752
Added missing `get_class()` call, which was causing a reflection exce…
Ocramius Sep 27, 2014
f14d2bb
Forgot a return statement in a static proxy constructor
Ocramius Sep 27, 2014
a20a06b
Tests should also use the `staticProxyConstructor` where applicable
Ocramius Sep 27, 2014
de9bbdc
Minor cleanups in the remote object factory code
Ocramius Sep 27, 2014
f46e45f
Using the `staticProxyConstructor` in factories where applicable
Ocramius Sep 27, 2014
0333fb4
Using the `staticProxyConstructor` in the test suite where applicable
Ocramius Sep 27, 2014
9b61125
Removing last leftovers of direct proxy constructor calls
Ocramius Sep 27, 2014
70d2b47
Removing old constructor override
Ocramius Sep 27, 2014
d6c00b3
PHP 5.6 supports reflection-based proxy instantiation for internal cl…
Ocramius Sep 28, 2014
b727fdd
No need to extend from anything in the remote object factory tests
Ocramius Oct 1, 2014
3234e82
Optimized imports (duplicate imports were causing fatals)
Ocramius Oct 1, 2014
34a7c0a
Using static constructor where available
Ocramius Oct 1, 2014
ad747c8
Simplified test code (avoiding unused assignment)
Ocramius Oct 1, 2014
ca8bac4
Fixed line length overflow (limit is 120 chars)
Ocramius Oct 1, 2014
7edac82
Fixed line length overflow (limit is 120 chars)
Ocramius Oct 1, 2014
dab3e3a
Loosen requirement for PHP versions: 5.4 is enough to have some synta…
Ocramius Oct 1, 2014
3e91886
Skipping PHP 5.3 builds
Ocramius Oct 1, 2014
b5c43de
Fixed breakages in the test suite - was using static constructor on n…
Ocramius Oct 1, 2014
c4ba608
Skipping tests about internal PHP classes when in PHP < 5.6
Ocramius Oct 1, 2014
8ecc06f
Simplified static proxy constructor (avoiding unused params
Ocramius Oct 1, 2014
b67197f
Implemented missing docblock params
Ocramius Oct 1, 2014
b5ab074
Removed unused imports
Ocramius Oct 1, 2014
7b7ff4a
Minor performance optimization: avoiding spawning a reflection class …
Ocramius Oct 1, 2014
85b5b19
Minor performance optimization: avoiding spawning a reflection class …
Ocramius Oct 1, 2014
f8e4156
Minor performance optimization: avoiding spawning a reflection class …
Ocramius Oct 1, 2014
7ce16a0
Minor performance optimization: avoiding spawning a reflection class …
Ocramius Oct 1, 2014
8bd50f3
Minor performance optimization: avoiding spawning a reflection class …
Ocramius Oct 1, 2014
1031dea
Coverage for the static proxy constructor implementation
Ocramius Oct 1, 2014
11a215d
Correct location for the `StaticProxyConstructorTest`
Ocramius Oct 1, 2014
4d9a980
Coverage for the `BindProxyProperties` implementation
Ocramius Oct 1, 2014
32b8743
Removing unused import
Ocramius Oct 1, 2014
a4ad856
Coverage for the static proxy constructor implementation
Ocramius Oct 1, 2014
7aebe26
Coverage for the static proxy constructor implementation
Ocramius Oct 1, 2014
c3499f2
Coverage for the static proxy constructor implementation
Ocramius Oct 1, 2014
0a07281
Removed unused import
Ocramius Oct 1, 2014
2fe62b5
Coverage for the static proxy constructor implementation
Ocramius Oct 1, 2014
0cbebf3
Removed unused import
Ocramius Oct 1, 2014
78d2280
Adding test asset to verify that proxy constructors work as expected …
Ocramius Oct 1, 2014
59e1935
Adding test to verify that proxy constructors work like the proxied c…
Ocramius Oct 1, 2014
7f13fdf
More checks on the test asset being used
Ocramius Oct 1, 2014
b9c6e9f
Typo fix (counter expectation was incorrect)
Ocramius Oct 1, 2014
eb9de78
Adding getter for `amount` (to be proxied)
Ocramius Oct 1, 2014
11802d0
Testing getter logic on the access interceptor scope localizer logic
Ocramius Oct 1, 2014
76c716c
Expecting access interceptor value holder to behave as if the constru…
Ocramius Oct 1, 2014
85741f6
Adding test asset with a PHP4-style constructors
Ocramius Oct 1, 2014
233b2e2
Removing invalid test asset - PHP4 constructors don't work with names…
Ocramius Oct 1, 2014
596c71d
Implementing codegen assertions for the access interceptor value hold…
Ocramius Oct 1, 2014
78a944f
Reducing coverage annotations clutter
Ocramius Oct 1, 2014
fdcb2f4
Implementing constructor generator for access interceptor value holde…
Ocramius Oct 1, 2014
cdcf9e9
Using the newly implemented access interceptor value holder construct…
Ocramius Oct 1, 2014
86a8bfa
Implementing tests to cover #115 and #175 in lazy loading ghost logic
Ocramius Oct 1, 2014
0eaf405
Implementing tests to cover #115 and #175 in lazy loading value holde…
Ocramius Oct 1, 2014
52f0e75
Restoring location of incorrectly moved files
Ocramius Oct 1, 2014
6366b00
Moved constructor generator into th more generic `ProxyManager\ProxyG…
Ocramius Oct 1, 2014
e8ae065
PHP/HHVM compat should be checked via `method_exists()`, not via vers…
Ocramius Oct 1, 2014
05c9b17
CS fix - whitespace removal
Ocramius Oct 1, 2014
3b996ab
Removed unused import
Ocramius Oct 1, 2014
62812b7
CS fix - docblock alignment
Ocramius Oct 1, 2014
57f78db
CS fix - docblock alignment
Ocramius Oct 1, 2014
89d0519
CS fix - docblock alignment
Ocramius Oct 1, 2014
0284096
CS fix - docblock alignment
Ocramius Oct 1, 2014
10d21fa
Importing used classes, optimizing imports
Ocramius Dec 14, 2014
cc610f3
Add overriding constructor to the generated value holder proxy in ord…
Ocramius Dec 14, 2014
15fcde7
`ClassGeneratorUtilsTest` is part of coverage tests
Ocramius Dec 14, 2014
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
language: php

php:
- 5.3.3
- 5.3
- 5.4
- 5.5
- 5.6
Expand Down
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
}
],
"require": {
"php": ">=5.3.3",
"php": "~5.4",
"zendframework/zend-code": ">2.2.5,<3.0"
},
"require-dev": {
Expand All @@ -28,6 +28,7 @@
"squizlabs/php_codesniffer": "1.5.*"
},
"suggest": {
"php": ">5.6 if you work with internal PHP classes, as reflection instantiation does not work with older PHP versions",
"zendframework/zend-stdlib": "To use the hydrator proxy",
"ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects",
"zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)",
Expand Down
2 changes: 1 addition & 1 deletion src/ProxyManager/Factory/AbstractLazyFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,6 @@ public function createProxy($className, Closure $initializer)
{
$proxyClassName = $this->generateProxy($className);

return new $proxyClassName($initializer);
return $proxyClassName::staticProxyConstructor($initializer);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public function createProxy($instance, array $prefixInterceptors = array(), arra
{
$proxyClassName = $this->generateProxy(get_class($instance));

return new $proxyClassName($instance, $prefixInterceptors, $suffixInterceptors);
return $proxyClassName::staticProxyConstructor($instance, $prefixInterceptors, $suffixInterceptors);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public function createProxy($instance, array $prefixInterceptors = array(), arra
{
$proxyClassName = $this->generateProxy(get_class($instance));

return new $proxyClassName($instance, $prefixInterceptors, $suffixInterceptors);
return $proxyClassName::staticProxyConstructor($instance, $prefixInterceptors, $suffixInterceptors);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/ProxyManager/Factory/NullObjectFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public function createProxy($instanceOrClassName)
$className = is_object($instanceOrClassName) ? get_class($instanceOrClassName) : $instanceOrClassName;
$proxyClassName = $this->generateProxy($className);

return new $proxyClassName();
return $proxyClassName::staticProxyConstructor();
}

/**
Expand Down
7 changes: 4 additions & 3 deletions src/ProxyManager/Factory/RemoteObjectFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,11 @@ public function __construct(AdapterInterface $adapter, Configuration $configurat
*/
public function createProxy($instanceOrClassName)
{
$className = is_object($instanceOrClassName) ? get_class($instanceOrClassName) : $instanceOrClassName;
$proxyClassName = $this->generateProxy($className);
$proxyClassName = $this->generateProxy(
is_object($instanceOrClassName) ? get_class($instanceOrClassName) : $instanceOrClassName
);

return new $proxyClassName($this->adapter);
return $proxyClassName::staticProxyConstructor($this->adapter);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ class MagicWakeup extends MagicMethodGenerator
{
/**
* Constructor
*
* @param ReflectionClass $originalClass
*/
public function __construct(ReflectionClass $originalClass)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ class SetMethodPrefixInterceptor extends MethodGenerator
{
/**
* Constructor
*
* @param PropertyGenerator $prefixInterceptor
*/
public function __construct(PropertyGenerator $prefixInterceptor)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ class SetMethodSuffixInterceptor extends MethodGenerator
{
/**
* Constructor
*
* @param PropertyGenerator $suffixInterceptor
*/
public function __construct(PropertyGenerator $suffixInterceptor)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license.
*/

namespace ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator;

use ProxyManager\Exception\UnsupportedProxiedClassException;
use ProxyManager\Generator\MethodGenerator;
use ProxyManager\Generator\ParameterGenerator;
use ReflectionClass;
use Zend\Code\Generator\PropertyGenerator;

/**
* The `bindProxyProperties` method implementation for access interceptor scope localizers
*
* @author Marco Pivetta <ocramius@gmail.com>
* @license MIT
*/
class BindProxyProperties extends MethodGenerator
{
/**
* Constructor
*
* @param ReflectionClass $originalClass
* @param PropertyGenerator $prefixInterceptors
* @param PropertyGenerator $suffixInterceptors
*/
public function __construct(
ReflectionClass $originalClass,
PropertyGenerator $prefixInterceptors,
PropertyGenerator $suffixInterceptors
) {
parent::__construct('bindProxyProperties', array(), static::FLAG_PRIVATE);

$localizedObject = new ParameterGenerator('localizedObject');
$prefix = new ParameterGenerator('prefixInterceptors');
$suffix = new ParameterGenerator('suffixInterceptors');

$localizedObject->setType($originalClass->getName());
$prefix->setDefaultValue(array());
$suffix->setDefaultValue(array());
$prefix->setType('array');
$suffix->setType('array');

$this->setParameter($localizedObject);
$this->setParameter($prefix);
$this->setParameter($suffix);

$localizedProperties = array();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you use the short syntax.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll leave the short syntax for a subsequent diff: I don't want to clutter this one.


foreach ($originalClass->getProperties() as $originalProperty) {
if ((! method_exists('Closure', 'bind')) && $originalProperty->isPrivate()) {
// @codeCoverageIgnoreStart
throw UnsupportedProxiedClassException::unsupportedLocalizedReflectionProperty($originalProperty);
// @codeCoverageIgnoreEnd
}

$propertyName = $originalProperty->getName();

if ($originalProperty->isPrivate()) {
$localizedProperties[] = "\\Closure::bind(function () use (\$localizedObject) {\n "
. '$this->' . $propertyName . ' = & $localizedObject->' . $propertyName . ";\n"
. '}, $this, ' . var_export($originalProperty->getDeclaringClass()->getName(), true)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

var_export() is really needded here?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it prevents nasty things when people use class names with weird chars in them

. ')->__invoke();';
} else {
$localizedProperties[] = '$this->' . $propertyName . ' = & $localizedObject->' . $propertyName . ";";
}
}

$this->setDocblock(
"@override constructor to setup interceptors\n\n"
. "@param \\" . $originalClass->getName() . " \$localizedObject\n"
. "@param \\Closure[] \$prefixInterceptors method interceptors to be used before method logic\n"
. "@param \\Closure[] \$suffixInterceptors method interceptors to be used before method logic"
);
$this->setBody(
(empty($localizedProperties) ? '' : implode("\n\n", $localizedProperties) . "\n\n")
. '$this->' . $prefixInterceptors->getName() . " = \$prefixInterceptors;\n"
. '$this->' . $suffixInterceptors->getName() . " = \$suffixInterceptors;"
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ class Constructor extends MethodGenerator
{
/**
* Constructor
*
* @param ReflectionClass $originalClass
* @param PropertyGenerator $prefixInterceptors
* @param PropertyGenerator $suffixInterceptors
*/
public function __construct(
ReflectionClass $originalClass,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ class MagicClone extends MagicMethodGenerator
{
/**
* Constructor
*
* @param ReflectionClass $originalClass
* @param PropertyGenerator $prefixInterceptors
* @param PropertyGenerator $suffixInterceptors
*/
public function __construct(
ReflectionClass $originalClass,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ class MagicSleep extends MagicMethodGenerator
{
/**
* Constructor
*
* @param ReflectionClass $originalClass
* @param PropertyGenerator $prefixInterceptors
* @param PropertyGenerator $suffixInterceptors
*/
public function __construct(
ReflectionClass $originalClass,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license.
*/

namespace ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator;

use ProxyManager\Generator\MethodGenerator;
use ProxyManager\Generator\ParameterGenerator;
use ReflectionClass;

/**
* The `staticProxyConstructor` implementation for an access interceptor scope localizer proxy
*
* @author Marco Pivetta <ocramius@gmail.com>
* @license MIT
*/
class StaticProxyConstructor extends MethodGenerator
{
/**
* Constructor
*
* @param ReflectionClass $originalClass
*/
public function __construct(ReflectionClass $originalClass)
{
parent::__construct('staticProxyConstructor', array(), static::FLAG_PUBLIC | static::FLAG_STATIC);

$localizedObject = new ParameterGenerator('localizedObject');
$prefix = new ParameterGenerator('prefixInterceptors');
$suffix = new ParameterGenerator('suffixInterceptors');

$localizedObject->setType($originalClass->getName());
$prefix->setDefaultValue(array());
$suffix->setDefaultValue(array());
$prefix->setType('array');
$suffix->setType('array');

$this->setParameter($localizedObject);
$this->setParameter($prefix);
$this->setParameter($suffix);

$this->setDocblock(
"Constructor to setup interceptors\n\n"
. "@param \\" . $originalClass->getName() . " \$localizedObject\n"
. "@param \\Closure[] \$prefixInterceptors method interceptors to be used before method logic\n"
. "@param \\Closure[] \$suffixInterceptors method interceptors to be used before method logic\n\n"
. "@return self"
);
$this->setBody(
'static $reflection;' . "\n\n"
. '$reflection = $reflection ?: $reflection = new \ReflectionClass(__CLASS__);' . "\n"
. '$instance = $reflection->newInstanceWithoutConstructor();' . "\n\n"
. '$instance->bindProxyProperties($localizedObject, $prefixInterceptors, $suffixInterceptors);' . "\n\n"
. 'return $instance;'
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,15 @@
use ProxyManager\ProxyGenerator\AccessInterceptor\MethodGenerator\SetMethodPrefixInterceptor;
use ProxyManager\ProxyGenerator\AccessInterceptor\MethodGenerator\SetMethodSuffixInterceptor;
use ProxyManager\ProxyGenerator\AccessInterceptor\PropertyGenerator\MethodPrefixInterceptors;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\Constructor;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\BindProxyProperties;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\InterceptedMethod;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\MagicClone;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\MagicGet;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\MagicIsset;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\MagicSet;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\MagicSleep;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\MagicUnset;
use ProxyManager\ProxyGenerator\AccessInterceptorScopeLocalizer\MethodGenerator\StaticProxyConstructor;
use ProxyManager\ProxyGenerator\Assertion\CanProxyAssertion;
use ProxyManager\ProxyGenerator\Util\ProxiedMethodsFilter;
use ReflectionClass;
Expand Down Expand Up @@ -80,7 +81,8 @@ function (ReflectionMethod $method) use ($prefixInterceptors, $suffixInterceptor
)
),
array(
new Constructor($originalClass, $prefixInterceptors, $suffixInterceptors),
new StaticProxyConstructor($originalClass, $prefixInterceptors, $suffixInterceptors),
new BindProxyProperties($originalClass, $prefixInterceptors, $suffixInterceptors),
new SetMethodPrefixInterceptor($prefixInterceptors),
new SetMethodSuffixInterceptor($suffixInterceptors),
new MagicGet($originalClass, $prefixInterceptors, $suffixInterceptors),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ class MagicClone extends MagicMethodGenerator
{
/**
* Constructor
*
* @param ReflectionClass $originalClass
* @param PropertyGenerator $valueHolderProperty
* @param PropertyGenerator $prefixInterceptors
* @param PropertyGenerator $suffixInterceptors
*/
public function __construct(
ReflectionClass $originalClass,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ class MagicGet extends MagicMethodGenerator
{
/**
* Constructor
*
* @param ReflectionClass $originalClass
* @param PropertyGenerator $valueHolder
* @param PropertyGenerator $prefixInterceptors
* @param PropertyGenerator $suffixInterceptors
* @param PublicPropertiesMap $publicProperties
*/
public function __construct(
ReflectionClass $originalClass,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ class MagicIsset extends MagicMethodGenerator
{
/**
* Constructor
* @param ReflectionClass $originalClass
* @param PropertyGenerator $valueHolder
* @param PropertyGenerator $prefixInterceptors
* @param PropertyGenerator $suffixInterceptors
* @param PublicPropertiesMap $publicProperties
*/
public function __construct(
ReflectionClass $originalClass,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ class MagicSet extends MagicMethodGenerator
{
/**
* Constructor
* @param ReflectionClass $originalClass
* @param PropertyGenerator $valueHolder
* @param PropertyGenerator $prefixInterceptors
* @param PropertyGenerator $suffixInterceptors
* @param PublicPropertiesMap $publicProperties
*/
public function __construct(
ReflectionClass $originalClass,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ class MagicUnset extends MagicMethodGenerator
{
/**
* Constructor
* @param ReflectionClass $originalClass
* @param PropertyGenerator $valueHolder
* @param PropertyGenerator $prefixInterceptors
* @param PropertyGenerator $suffixInterceptors
* @param PublicPropertiesMap $publicProperties
*/
public function __construct(
ReflectionClass $originalClass,
Expand Down
Loading