[ Index ] |
PHP Cross Reference of phpBB-3.3.7-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 4 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 5 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 6 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 7 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 8 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 9 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 10 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 11 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 12 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 13 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 * 15 * This software consists of voluntary contributions made by many individuals 16 * and is licensed under the MIT license. 17 */ 18 19 declare(strict_types=1); 20 21 namespace ProxyManager\ProxyGenerator\AccessInterceptorValueHolder\MethodGenerator; 22 23 use ProxyManager\Generator\MethodGenerator; 24 use ProxyManager\ProxyGenerator\Util\Properties; 25 use ProxyManager\ProxyGenerator\Util\UnsetPropertiesGenerator; 26 use ReflectionClass; 27 use Zend\Code\Generator\ParameterGenerator; 28 use Zend\Code\Generator\PropertyGenerator; 29 30 /** 31 * The `staticProxyConstructor` implementation for access interceptor value holders 32 * 33 * @author Marco Pivetta <ocramius@gmail.com> 34 * @license MIT 35 */ 36 class StaticProxyConstructor extends MethodGenerator 37 { 38 /** 39 * Constructor 40 * 41 * @param ReflectionClass $originalClass 42 * @param PropertyGenerator $valueHolder 43 * @param PropertyGenerator $prefixInterceptors 44 * @param PropertyGenerator $suffixInterceptors 45 * 46 * @throws \Zend\Code\Generator\Exception\InvalidArgumentException 47 */ 48 public function __construct( 49 ReflectionClass $originalClass, 50 PropertyGenerator $valueHolder, 51 PropertyGenerator $prefixInterceptors, 52 PropertyGenerator $suffixInterceptors 53 ) { 54 parent::__construct('staticProxyConstructor', [], static::FLAG_PUBLIC | static::FLAG_STATIC); 55 56 $prefix = new ParameterGenerator('prefixInterceptors'); 57 $suffix = new ParameterGenerator('suffixInterceptors'); 58 59 $prefix->setDefaultValue([]); 60 $suffix->setDefaultValue([]); 61 $prefix->setType('array'); 62 $suffix->setType('array'); 63 64 $this->setParameter(new ParameterGenerator('wrappedObject')); 65 $this->setParameter($prefix); 66 $this->setParameter($suffix); 67 $this->setReturnType($originalClass->getName()); 68 69 $this->setDocBlock( 70 "Constructor to setup interceptors\n\n" 71 . "@param \\" . $originalClass->getName() . " \$wrappedObject\n" 72 . "@param \\Closure[] \$prefixInterceptors method interceptors to be used before method logic\n" 73 . "@param \\Closure[] \$suffixInterceptors method interceptors to be used before method logic\n\n" 74 . '@return self' 75 ); 76 77 $this->setBody( 78 'static $reflection;' . "\n\n" 79 . '$reflection = $reflection ?: $reflection = new \ReflectionClass(__CLASS__);' . "\n" 80 . '$instance = (new \ReflectionClass(get_class()))->newInstanceWithoutConstructor();' . "\n\n" 81 . UnsetPropertiesGenerator::generateSnippet(Properties::fromReflectionClass($originalClass), 'instance') 82 . '$instance->' . $valueHolder->getName() . " = \$wrappedObject;\n" 83 . '$instance->' . $prefixInterceptors->getName() . " = \$prefixInterceptors;\n" 84 . '$instance->' . $suffixInterceptors->getName() . " = \$suffixInterceptors;\n\n" 85 . 'return $instance;' 86 ); 87 } 88 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Mar 24 21:31:15 2022 | Cross-referenced by PHPXref 0.7.1 |