当前位置: 首页>>代码示例>>PHP>>正文


PHP ReflectionClass::getConstructor方法代码示例

本文整理汇总了PHP中ReflectionClass::getConstructor方法的典型用法代码示例。如果您正苦于以下问题:PHP ReflectionClass::getConstructor方法的具体用法?PHP ReflectionClass::getConstructor怎么用?PHP ReflectionClass::getConstructor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ReflectionClass的用法示例。


在下文中一共展示了ReflectionClass::getConstructor方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: map

 /**
  * Maps two object together, a map should exist.
  *
  * @param $source
  * @param $destination
  *
  * @return object
  * @throws InvalidClassConstructorException
  */
 public function map($source, $destination)
 {
     if (is_string($destination)) {
         $destinationRef = new \ReflectionClass($destination);
         if ($destinationRef->getConstructor() && $destinationRef->getConstructor()->getNumberOfRequiredParameters() > 0) {
             throw new InvalidClassConstructorException($destination);
         }
         $destination = $destinationRef->newInstance();
     }
     $map = $this->getMap($this->guessType($source), $this->guessType($destination));
     $fieldAccessors = $map->getFieldAccessors();
     $fieldFilters = $map->getFieldFilters();
     foreach ($fieldAccessors as $path => $fieldAccessor) {
         $value = $fieldAccessor->getValue($source);
         if (isset($fieldFilters[$path])) {
             if (($filter = $fieldFilters[$path]) instanceof AbstractMappingFilter) {
                 $filter->setMapper($this);
             }
             $value = $filter->filter($value);
         }
         if ($map->getSkipNull() && is_null($value)) {
             continue;
         }
         $propertyAccessor = PropertyAccess::createPropertyAccessor();
         if ($map->getOverwriteIfSet()) {
             $propertyAccessor->setValue($destination, $path, $value);
         } else {
             if ($propertyAccessor->getValue($destination, $path) == null) {
                 $propertyAccessor->setValue($destination, $path, $value);
             }
         }
     }
     return $destination;
 }
开发者ID:jogaram,项目名称:BCCAutoMapperBundle,代码行数:43,代码来源:Mapper.php

示例2: testDateTime

 /**
  * Test handling of attributes of the DateTime type.
  */
 public function testDateTime()
 {
     // Add a mostly dummy configuration. We are not going to read or write any files here.
     // The important part is the accessors part.
     $config = new Config(array('inputFile' => null, 'outputDir' => null, 'constructorParamsDefaultToNull' => true));
     $complexType = new ComplexType($config, 'ComplexTypeTestClass');
     $complexType->addMember('dateTime', 'dateTimeAttribute', false);
     $this->generateClass($complexType);
     $this->assertClassExists('ComplexTypeTestClass');
     $this->assertClassHasAttribute('dateTimeAttribute', 'ComplexTypeTestClass');
     $this->assertClassHasMethod('ComplexTypeTestClass', 'getDateTimeAttribute');
     $this->assertClassHasMethod('ComplexTypeTestClass', 'setDateTimeAttribute');
     $object = new \ComplexTypeTestClass(new \DateTime());
     $class = new \ReflectionClass($object);
     $this->assertMethodParameterHasType($class->getConstructor(), 'dateTimeAttribute', 'DateTime');
     $this->assertMethodParameterDocBlockHasType($class->getConstructor(), 'dateTimeAttribute', '\\DateTime');
     $this->assertMethodHasReturnType($class->getMethod('getDateTimeAttribute'), '\\DateTime');
     $this->assertMethodParameterHasType($class->getMethod('setDateTimeAttribute'), 'dateTimeAttribute', 'DateTime');
     $this->assertMethodParameterDocBlockHasType($class->getMethod('setDateTimeAttribute'), 'dateTimeAttribute', '\\DateTime');
     // Using reflection to set up bad datetime value as like SoapClass does it
     $property = 'dateTimeAttribute';
     $badDateTime = 'noDate';
     $this->setObjectProperty($object, $property, $badDateTime);
     $this->assertFalse($object->getDateTimeAttribute());
     // Test passing variable datetime formats available in SOAP, http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#dateTime
     $now = new \DateTime();
     foreach (array('Y-m-d\\TH:i:s', 'Y-m-d\\TH:i:sP', 'Y-m-d\\TH:i:s.u', 'Y-m-d\\TH:i:s.uP', 'Y-m-d\\TH:i:s\\Z', 'Y-m-d\\TH:i:s.u\\Z') as $format) {
         $this->setObjectProperty($object, $property, $now->format($format));
         $this->assertInstanceOf('\\DateTime', $object->getDateTimeAttribute());
     }
 }
开发者ID:gorocacher,项目名称:wsdl2phpgenerator,代码行数:34,代码来源:ComplexTypeTest.php

示例3: execute

 /**
  * {@inheritdoc}
  */
 public function execute(InputInterface $input, OutputInterface $output)
 {
     $class = $input->getArgument('factory');
     $class = str_replace('/', '\\', $class);
     if (false === class_exists($class)) {
         throw new \Exception(sprintf('Class %s not found', $class));
     }
     $rfl = new \ReflectionClass($class);
     if (null !== $rfl->getConstructor() && 0 < $rfl->getConstructor()->getNumberOfRequiredParameters()) {
         throw new \Exception('Can\'t instanciate adapter factory %s, constructor shouldn\'t need required parameters');
     }
     $factory = new $class();
     if (false === $factory instanceof AdapterFactory) {
         throw new \Exception('Your adapter factory should implements Gaufrette\\TestSuite\\Adapter\\AdapterFactory');
     }
     $exit = 0;
     foreach ($this->tests->all() as $test) {
         $output->writeln('');
         $adapter = $factory->create();
         $result = $this->runTest($test, $adapter, $output);
         $factory->destroy();
         $exit = true === $result ? $exit : 1;
     }
     $output->writeln('');
     return $exit;
 }
开发者ID:gaufrette,项目名称:test-suite,代码行数:29,代码来源:RunCommand.php

示例4: resolve

 /**
  * @param null|string|CrudControllerInterface $controller
  * @return CrudControllerInterface
  * @throws ControllerNotFoundException
  */
 public function resolve($controller)
 {
     if (null === $controller) {
         $controller = $this->defaultController;
     }
     $name = $controller;
     if (is_string($controller)) {
         if (isset($this->resolved[$controller])) {
             return $this->resolved[$controller];
         }
         if ($this->container->has($controller)) {
             $controller = $this->container->get($controller);
         } elseif (class_exists($controller, true)) {
             $refl = new \ReflectionClass($controller);
             if ($refl->implementsInterface('Bravesheep\\CrudifyBundle\\Controller\\CrudControllerInterface')) {
                 if ($refl->getConstructor() === null || $refl->getConstructor()->getNumberOfRequiredParameters() === 0) {
                     $controller = $refl->newInstance();
                     $controller->setContainer($this->container);
                 }
             }
         }
     }
     if (!$controller instanceof CrudControllerInterface) {
         throw new ControllerNotFoundException("Could not resolve controller specification to controller");
     }
     if (is_string($name)) {
         $this->resolved[$name] = $controller;
     }
     return $controller;
 }
开发者ID:bravesheep,项目名称:crudify-bundle,代码行数:35,代码来源:ControllerResolver.php

示例5: readInterface

 /**
  * Derives properties from constructor, public instance variables, getters and setters.
  *
  * @param object|null $object If provided, dynamic (run-time) variables are read as well
  * @return \watoki\collections\Map|Property[] indexed by property name
  */
 public function readInterface($object = null)
 {
     $properties = new Map();
     if ($this->class->getConstructor()) {
         foreach ($this->class->getConstructor()->getParameters() as $parameter) {
             $this->accumulate($properties, new property\ConstructorProperty($this->factory, $this->class->getConstructor(), $parameter));
         }
     }
     $declaredProperties = array();
     foreach ($this->class->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
         if (!$property->isStatic()) {
             $declaredProperties[] = $property->name;
             $this->accumulate($properties, new property\InstanceVariableProperty($this->factory, $property));
         }
     }
     if (is_object($object)) {
         foreach ($object as $name => $value) {
             if (!in_array($name, $declaredProperties)) {
                 $this->accumulate($properties, new property\DynamicProperty($this->factory, new \ReflectionClass($object), $name));
             }
         }
     }
     foreach ($this->class->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
         if (property\AccessorProperty::isAccessor($method) && !$method->isStatic()) {
             $this->accumulate($properties, new property\AccessorProperty($this->factory, $method));
         }
     }
     return $properties;
 }
开发者ID:watoki,项目名称:reflect,代码行数:35,代码来源:PropertyReader.php

示例6: __construct

 /**
  * Constructor
  *
  * @param string|object $base_class Class name of the base class, or an instance
  * @param array $constructor_args (Optional) Arguments to pass to the constructor of the base class
  * @param array $constants (Optional) Constants to override
  */
 public function __construct($base_class, array $constructor_args = array(), array $constants = array())
 {
     // @codeCoverageIgnoreStart
     if (PHP_VERSION_ID < 50300) {
         trigger_error(get_class() . ': This class requires PHP version 5.3 or higher.', E_USER_ERROR);
     }
     // @codeCoverageIgnoreEnd
     if (is_object($base_class) && count($constructor_args)) {
         throw new Mollie_Testing_Exception('Unused constructor arguments for passed instance of "' . get_class($base_class) . '".');
     }
     // If it's an instance, just accept it
     if (is_object($base_class)) {
         $this->_base_class = $base_class;
     } elseif (!class_exists($base_class)) {
         throw new Mollie_Testing_Exception("Base class '{$base_class}' does not exist.");
     } else {
         $ref = new ReflectionClass($base_class);
         if ($ref->isAbstract()) {
             $ref = new ReflectionClass($this->createDerivedClass($base_class));
         }
         if ($ref->getConstructor() && count($constructor_args) < $ref->getConstructor()->getNumberOfRequiredParameters()) {
             throw new Mollie_Testing_Exception($ref->getConstructor()->getNumberOfRequiredParameters() . " constructor arguments required for '{$base_class}::__construct(...)'.");
         }
         $this->_base_class = sizeof($constructor_args) ? $ref->newInstanceArgs($constructor_args) : $ref->newInstance();
     }
 }
开发者ID:javolero,项目名称:Prestashop,代码行数:33,代码来源:impostor.php

示例7: generateCode

 private function generateCode($classes, $controllerName)
 {
     $methods = [];
     $comments = [];
     foreach ($classes as $item) {
         if (false === class_exists($item)) {
             $comments[] = sprintf('Class %s does not exist', $item);
             continue;
         }
         $reflection = new \ReflectionClass($item);
         if ($reflection->getConstructor() && 0 !== $reflection->getConstructor()->getNumberOfRequiredParameters()) {
             $comments[] = sprintf('Class %s has a required constructor argument', $item);
             continue;
         }
         if (false === $reflection->hasMethod('getDefaultView')) {
             $comments[] = sprintf('Class %s has no default view', $item);
             continue;
         }
         list($name) = array_reverse(explode("\\", $item));
         $template = $reflection->newInstance()->getDefaultView();
         $methods[] = ['name' => lcfirst($name), 'class' => $item, 'template' => $template];
     }
     $code = '<?php' . "\n\n" . '// THIS FILE IS GENERATED DURING THE CACHE WARMUP, DO NOT MODIFY' . "\n" . 'class %s extends \\Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller' . "\n" . '{%s}';
     $code = sprintf($code, $controllerName, "\n\n\t" . ($comments ? implode("\n\t", $comments) . "\n\n\t" : '') . implode("\n\t", array_map(function ($item) {
         $key = false === strpos($item['class'], "PagePart") ? 'page' : 'resource';
         return sprintf('public function %sAction()' . "\n\t" . '{' . "\n\t\t" . 'return $this->render("%s", [' . "\n\t\t\t" . '"%s" => new \\%s,' . "\n\t\t" . ']);' . "\n\t" . "}" . "\n", $item['name'], $item['template'], $key, $item['class']);
     }, $methods)) . "\n");
     $code = str_replace("\t", "    ", $code);
     return $code;
 }
开发者ID:arsthanea,项目名称:kunstmaan-extra-bundle,代码行数:30,代码来源:TypehintingControllerCacheWarmer.php

示例8: instantinate

 private function instantinate($class_name)
 {
     if (array_key_exists($class_name, $this->class_dictionary)) {
         $class_name = $this->class_dictionary[$class_name];
     }
     $class = new ReflectionClass($class_name);
     $parameters = array();
     $constructor = $class->getConstructor();
     if ($constructor != null) {
         $parameters = $class->getConstructor()->getParameters();
     }
     $dependencies = array();
     foreach ($parameters as $value) {
         $className = "";
         if ($value->getClass() != null) {
             $className = $value->getClass()->getName();
         }
         $parameterName = $value->getName();
         if (array_key_exists($className, $this->instance_dictionary)) {
             $dependencies[] = $this->instance_dictionary[$className];
         } elseif (array_key_exists($parameterName, $this->var_dictionary)) {
             if (!is_string($this->var_dictionary[$parameterName])) {
                 $dependencies[] = $this->var_dictionary[$parameterName];
             } else {
                 $dependencies[] = $this->get($this->var_dictionary[$parameterName]);
             }
         } elseif (array_key_exists($className, $this->class_dictionary)) {
             $dependencies[] = $this->get($className);
         } else {
             throw new IocClassNotFounException($class_name, $className, $parameterName);
         }
     }
     return call_user_func_array(array(new ReflectionClass($class_name), 'newInstance'), $dependencies);
 }
开发者ID:meelstorm,项目名称:PohFramework,代码行数:34,代码来源:IocContainer.php

示例9: testGeneratedCode

 public function testGeneratedCode()
 {
     // Test that enums are created correctly.
     //
     // the MS-SSNWS contains enumerations with names that collide with PHP
     // keywords. This test ensures that they are created correctly.
     //
     // Load the code. This ensures that the syntax of the generated code is
     // valid.
     // We do not call the service here. It is not necessary for the check
     // at hand and we do not have a valid endpoint for the service either.
     // Create an instance of a class containing problematic constants. This also autoloads it.
     $typeEnum = new \sqlDbTypeEnum();
     // If we got this far and loaded the class without parse errors we should be good.
     $this->assertTrue(true);
     // Test that classes with datetimes are created correctly.
     //
     // This should be in a separate test method. This would however cause
     // code generated to run twice and classes would be generated twice as
     // setUp() is called twice. Since the first part of the test loads all
     // the classes the second round would add a suffix to class names to
     // avoid conflicts.
     //
     // This we test for multiple aspects in the same method. Going forward
     // we should consider separating generated code between methods - e.g.
     // by adding the test method as a namespace.
     $this->assertGeneratedClassExists('DayAsNumber');
     $object = new \DayAsNumber(new \DateTime());
     $class = new \ReflectionClass($object);
     $this->assertMethodParameterHasType($class->getConstructor(), 'day', 'DateTime');
     $this->assertMethodParameterDocBlockHasType($class->getConstructor(), 'day', '\\DateTime');
 }
开发者ID:aaronbauman,项目名称:wsdl2phpgenerator,代码行数:32,代码来源:MsSequelServerNativeWebServicesTest.php

示例10: make

 /**
  * Makes an instance of a class
  *
  * @param string $className Class name
  * @return object Class instance
  */
 public function make($className)
 {
     // Create a reflection to access the class properties
     $reflection = new \ReflectionClass($className);
     // If the class has no constructor, just return a new instance
     $constructor = $reflection->getConstructor();
     if (is_null($constructor)) {
         return new $className();
     }
     // Or get the constructor parameters and instance dependencies
     $dependencies = [];
     $parameters = $reflection->getConstructor()->getParameters();
     foreach ($parameters as $param) {
         $class = $param->getClass();
         if ($class && $class->getName() === 'Laito\\App') {
             // If the dependency is the app itself, inject the current instance
             $dependencies[] = $this;
         } else {
             // Otherwise, inject the instantiated dependency or a null value
             $dependencies[] = $class ? $this->make($class->name) : 'NULL';
         }
     }
     // Return the class instance
     $instance = $reflection->newInstanceArgs($dependencies);
     // If the class has a boot method, run it
     if (method_exists($instance, 'boot')) {
         $instance->boot();
     }
     // Return instance
     return $instance;
 }
开发者ID:mangolabs,项目名称:laito,代码行数:37,代码来源:App.php

示例11: getReflectionParameters

 /**
  * @return \ReflectionParameter[]
  */
 function getReflectionParameters()
 {
     $reflConstructor = $this->reflClass->getConstructor();
     if (NULL === $reflConstructor) {
         return array();
     }
     return $reflConstructor->getParameters();
 }
开发者ID:donquixote,项目名称:callback-reflection,代码行数:11,代码来源:CallbackReflection_ClassConstruction.php

示例12: initConstructorArgs

 /**
  * Fetches constructor args (array of ReflectionParameter) from the reflected class
  * and set them as an associative array
  */
 public function initConstructorArgs()
 {
     $constructor = $this->reflected->getConstructor();
     if (!is_null($constructor)) {
         // Index parameters by their names
         foreach ($constructor->getParameters() as $param) {
             $this->constructorArgs[$param->getName()] = $param;
         }
     }
 }
开发者ID:kburdon,项目名称:monolog-cascade,代码行数:14,代码来源:ConstructorResolver.php

示例13: getClassDefinition

 /**
  * Get Class definition for constructor parameter.
  *
  * @param \ReflectionClass $parameterClass
  *
  * @return mixed|null|object
  */
 private function getClassDefinition(\ReflectionClass $parameterClass)
 {
     $parameterClassName = $parameterClass->getName();
     $entryReference = new \ReflectionClass($parameterClass->getName());
     $argumentParams = false;
     if ($entryReference->getConstructor()) {
         $argumentParams = $entryReference->getConstructor()->getParameters();
     }
     return $argumentParams ? $this->get($parameterClassName) : new $parameterClassName();
 }
开发者ID:devstackphp,项目名称:di,代码行数:17,代码来源:Autowiring.php

示例14: initConstructorArgs

 /**
  * Fetches constructor args (array of ReflectionParameter) from the reflected class
  * and set them as an associative array
  *
  * Convert the parameter names to camelCase for classes that have contructor
  * params defined in snake_case for consistency with the options
  */
 public function initConstructorArgs()
 {
     $constructor = $this->reflected->getConstructor();
     if (!is_null($constructor)) {
         // Index parameters by their names
         foreach ($constructor->getParameters() as $param) {
             $name = Util::snakeToCamelCase($param->getName());
             $this->constructorArgs[$name] = $param;
         }
     }
 }
开发者ID:theorchard,项目名称:monolog-cascade,代码行数:18,代码来源:ConstructorResolver.php

示例15: initConstructorArgs

 /**
  * Fetches constructor args (array of ReflectionParameter) from the reflected class
  * and set them as an associative array
  *
  * Convert the parameter names to camelCase for classes that have contructor
  * params defined in snake_case for consistency with the options
  */
 public function initConstructorArgs()
 {
     $constructor = $this->reflected->getConstructor();
     $nameConverter = new CamelCaseToSnakeCaseNameConverter();
     if (!is_null($constructor)) {
         // Index parameters by their names
         foreach ($constructor->getParameters() as $param) {
             $this->constructorArgs[$nameConverter->denormalize($param->getName())] = $param;
         }
     }
 }
开发者ID:lightglitch,项目名称:monolog-cascade,代码行数:18,代码来源:ConstructorResolver.php


注:本文中的ReflectionClass::getConstructor方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。