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


PHP ReflectionClass::getProperties方法代码示例

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


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

示例1: addComplexType

 /**
  * Add a complex type by recursivly using all the class properties fetched via Reflection.
  *
  * @param  string $type Name of the class to be specified
  * @return string XSD Type for the given PHP type
  */
 public function addComplexType($type)
 {
     if (!class_exists($type)) {
         throw new \Zend\Soap\WSDL\Exception(sprintf('Cannot add a complex type %s that is not an object or where ' . 'class could not be found in \'DefaultComplexType\' strategy.', $type));
     }
     $dom = $this->getContext()->toDomDocument();
     $class = new \ReflectionClass($type);
     $complexType = $dom->createElement('xsd:complexType');
     $complexType->setAttribute('name', $type);
     $all = $dom->createElement('xsd:all');
     foreach ($class->getProperties() as $property) {
         if ($property->isPublic() && preg_match_all('/@var\\s+([^\\s]+)/m', $property->getDocComment(), $matches)) {
             /**
              * @todo check if 'xsd:element' must be used here (it may not be compatible with using 'complexType'
              * node for describing other classes used as attribute types for current class
              */
             $element = $dom->createElement('xsd:element');
             $element->setAttribute('name', $property->getName());
             $element->setAttribute('type', $this->getContext()->getType(trim($matches[1][0])));
             $all->appendChild($element);
         }
     }
     $complexType->appendChild($all);
     $this->getContext()->getSchema()->appendChild($complexType);
     $this->getContext()->addType($type);
     return "tns:{$type}";
 }
开发者ID:hjr3,项目名称:zf2,代码行数:33,代码来源:DefaultComplexType.php

示例2: 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

示例3: obj2Array

 private function obj2Array($obj)
 {
     $toRtn = array();
     $reflect = new \ReflectionClass(get_class($obj));
     $reflect->getProperties();
     foreach ($reflect->getProperties() as $property) {
         $result = null;
         if ($property->isPrivate() || $property->isProtected()) {
             $getter = 'get' . ucfirst($property->getName());
             if ($reflect->hasMethod($getter)) {
                 $result = $obj->{$getter}();
             }
         } else {
             $result = $property->getValue($obj);
         }
         if (is_object($result)) {
             $toRtn[$property->getName()] = $this->obj2Array($result);
         } elseif (is_array($result)) {
             $toRtn[$property->getName()] = $this->prepare($result);
         } else {
             $toRtn[$property->getName()] = $result;
         }
     }
     return $toRtn;
 }
开发者ID:Brotic66,项目名称:M2-PHPResponsive,代码行数:25,代码来源:NTReturn.php

示例4: getAsArray

 /**
  * @param string $columnName
  *
  * @return array
  */
 public function getAsArray($columnName = null)
 {
     if ($columnName) {
         $this->rewind();
         $obj = $this->current();
         if ($obj) {
             if (!$this->reflection) {
                 $this->reflection = new \ReflectionClass($this->current());
             }
             if ($this->columnMap === null) {
                 $this->columnMap = [];
                 foreach ($this->reflection->getProperties() as $property) {
                     $this->columnMap[$property->getName()] = $property;
                 }
             }
         }
     }
     $this->rewind();
     $arr = [];
     while ($this->valid()) {
         if ($columnName && !empty($this->columnMap[$columnName])) {
             $obj = $this->current();
             /**
              * @var \ReflectionProperty $test
              */
             $this->columnMap[$columnName]->setAccessible(true);
             $arr[] = $this->columnMap[$columnName]->getValue($obj);
         } else {
             $arr[] = $this->current();
         }
         $this->next();
     }
     return $arr;
 }
开发者ID:chilimatic,项目名称:database-component,代码行数:39,代码来源:EntityObjectStorage.php

示例5: exportCode

 /**
  * Exports the PHP code
  *
  * @return string
  */
 public function exportCode()
 {
     $code_lines = array();
     $code_lines[] = '<?php';
     // Export the namespace
     if ($this->_reflection_class->getNamespaceName()) {
         $code_lines[] = '';
         $code_lines[] = 'namespace ' . $this->_reflection_class->getNamespaceName() . ';';
         $code_lines[] = '';
     }
     // Export the class' signature
     $code_lines[] = sprintf('%s%s%s %s%s%s', $this->_reflection_class->isAbstract() ? 'abstract ' : '', $this->_reflection_class->isFinal() ? 'final ' : '', $this->_reflection_class->isInterface() ? 'interface' : ($this->_reflection_class->isTrait() ? 'trait' : 'class'), $this->getClassName(), $this->_getParentClassName() ? " extends {$this->_getParentClassName()}" : '', $this->_getInterfaceNames() ? " implements " . join(', ', $this->_getInterfaceNames()) : '');
     $code_lines[] = '{';
     $code_lines[] = '';
     // Export constants
     foreach ($this->_reflection_class->getConstants() as $name => $value) {
         $reflection_constant = new ReflectionConstant($name, $value);
         $code_lines[] = "\t" . $reflection_constant->exportCode();
         $code_lines[] = '';
     }
     // Export properties
     foreach ($this->_reflection_class->getProperties() as $property) {
         $reflection_property = new ReflectionProperty($property);
         $code_lines[] = "\t" . $reflection_property->exportCode();
         $code_lines[] = '';
     }
     // Export methods
     foreach ($this->_reflection_class->getMethods() as $method) {
         $reflection_method = new ReflectionMethod($method);
         $code_lines[] = "\t" . $reflection_method->exportCode();
         $code_lines[] = '';
     }
     $code_lines[] = '}';
     return join("\n", $code_lines);
 }
开发者ID:michalkoslab,项目名称:Helpers,代码行数:40,代码来源:ReflectionClass.php

示例6: _parseProperties

 protected function _parseProperties()
 {
     $props = $this->_class->getProperties();
     foreach ($props as $prop) {
         $this->_properties[] = new AnnotatedProperty($prop);
     }
 }
开发者ID:richardjohn,项目名称:FlowProject,代码行数:7,代码来源:AnnotatedClass.php

示例7: construct

 /**
  * Construct and return Array-Object
  * @param String $class
  * @return Array
  */
 public static function construct($class)
 {
     // If is already an object return the object
     // If not create an instance of the object bypassing a possible
     // class constructor
     if (is_object($class)) {
         $instantiatedClass = $class;
         $class = get_class($class);
     } else {
         $instantiatedClass = self::instantiate($class);
     }
     // Clean arrays
     $properties = array('protected' => array(), 'public' => array());
     $methods = array('protected' => array(), 'public' => array());
     // Reflection get properties and methods names (public and protected)
     $reflect = new \ReflectionClass($instantiatedClass);
     $reflectedClass = array('properties' => array('protected' => $reflect->getProperties(\ReflectionProperty::IS_PROTECTED), 'public' => $reflect->getProperties(\ReflectionProperty::IS_PUBLIC)), 'methods' => array('protected' => $reflect->getMethods(\ReflectionProperty::IS_PROTECTED), 'public' => $reflect->getMethods(\ReflectionProperty::IS_PUBLIC)));
     // Properties foreach's
     foreach ($reflectedClass['properties']['protected'] as $prop) {
         $properties['protected'][] = $prop->name;
     }
     foreach ($reflectedClass['properties']['public'] as $prop) {
         $properties['public'][] = $prop->name;
     }
     // Methods foreach's
     foreach ($reflectedClass['methods']['protected'] as $method) {
         $methods['protected'][] = $method->name;
     }
     foreach ($reflectedClass['methods']['public'] as $method) {
         $methods['public'][] = $method->name;
     }
     // Return Array-Object
     return array('name' => $class, 'object' => $instantiatedClass, 'methods' => $methods, 'properties' => $properties);
 }
开发者ID:ricardofbarros,项目名称:inheritance,代码行数:39,代码来源:ClassFactory.php

示例8: __set

 /**
  * Access to undeclared property.
  * @throws LogicException
  */
 public function __set($name, $value)
 {
     $rc = new \ReflectionClass($this);
     $items = array_diff($rc->getProperties(\ReflectionProperty::IS_PUBLIC), $rc->getProperties(\ReflectionProperty::IS_STATIC));
     $hint = ($t = Helpers::getSuggestion($items, $name)) ? ", did you mean \${$t}?" : '.';
     throw new LogicException("Attempt to write to undeclared property {$rc->getName()}::\${$name}{$hint}");
 }
开发者ID:Richmond77,项目名称:learning-nette,代码行数:11,代码来源:Object.php

示例9: getParentProperties

 /**
  * @param \ReflectionClass $reflectionClass
  *
  * @return \ReflectionProperty[]
  */
 private function getParentProperties(\ReflectionClass $reflectionClass)
 {
     $parent = $reflectionClass->getParentClass();
     if ($parent != null) {
         return array_merge($reflectionClass->getProperties(), $this->getParentProperties($parent));
     }
     return $reflectionClass->getProperties();
 }
开发者ID:zquintana,项目名称:SolrBundle,代码行数:13,代码来源:AnnotationReader.php

示例10: getProperties

 /**
  * Gets the properties of the object provided.
  *
  * @param int $filter
  *
  * @return array
  */
 public function getProperties($filter = \ReflectionProperty::IS_PUBLIC)
 {
     $properties = array();
     $reflectionProperties = $this->reflectionEntity->getProperties($filter);
     foreach ($reflectionProperties as $property) {
         $properties[] = new Property($property->name, $property->isStatic());
     }
     return $properties;
 }
开发者ID:fakerino,项目名称:fakerino,代码行数:16,代码来源:EntityInfo.php

示例11: getClassProperties

 /**
  * Gets an array of class properties through a reflection class instance
  *
  * @param   \ReflectionClass $class
  * @return  array
  */
 public function getClassProperties(\ReflectionClass $class)
 {
     $classProperties = [];
     $classProperties['constant'] = $class->getConstants();
     $classProperties['private'] = $class->getProperties(\ReflectionProperty::IS_PRIVATE);
     $classProperties['protected'] = $class->getProperties(\ReflectionProperty::IS_PROTECTED);
     $classProperties['public'] = $class->getProperties(\ReflectionProperty::IS_PUBLIC);
     $classProperties['static'] = $class->getProperties(\ReflectionProperty::IS_STATIC);
     return $classProperties;
 }
开发者ID:crimsonkissaki,项目名称:mockmaker,代码行数:16,代码来源:PropertyDataWorker.php

示例12: entityProperties

 public function entityProperties()
 {
     $fields = array();
     $reflection = new \ReflectionClass($this->entityClass);
     $reflection->getProperties();
     foreach ($reflection->getProperties() as $key => $property) {
         $fields[$key] = $property->getName();
     }
     return $fields;
 }
开发者ID:explore-laravel,项目名称:SimpleAdminBundle,代码行数:10,代码来源:Controller.php

示例13: getPropertiesWithAnnotation

 /**
  * Returns an array containing the names of all properties containing a particular annotation.
  *
  * @param string $annotation
  *
  * @return array
  */
 public function getPropertiesWithAnnotation($annotation)
 {
     $properties = array();
     foreach ($this->clazz->getProperties() as $property) {
         $annotations = $this->getPropertyAnnotations($property->getName());
         if (array_key_exists($annotation, $annotations)) {
             $properties[] = $property->getName();
         }
     }
     return $properties;
 }
开发者ID:eric-seekas,项目名称:Phake,代码行数:18,代码来源:Reader.php

示例14: __construct

 /**
  * @param string $classname The class to inspect
  * @param Reader $reader The annotation reader
  * @throws ClassNotFoundException
  */
 public function __construct($classname, Reader $reader)
 {
     try {
         $this->className = $classname;
         $this->reader = $reader;
         $this->reflectionClass = new \ReflectionClass($classname);
         $this->reflectionMethods = $this->reflectionClass->getMethods();
         $this->reflectionProperties = $this->reflectionClass->getProperties();
     } catch (\Exception $ex) {
         throw new ClassNotFoundException(sprintf("cannot find class %s", $classname), $ex->getCode(), $ex);
     }
 }
开发者ID:phramz,项目名称:doctrine-annotation-scanner,代码行数:17,代码来源:ClassInspector.php

示例15: mockInjectedProperties

 private static function mockInjectedProperties()
 {
     /** @var \ReflectionProperty $property */
     foreach (self::$reflectedClass->getProperties() as $property) {
         if (Nette\DI\PhpReflection::parseAnnotation($property, 'inject') !== NULL || Nette\DI\PhpReflection::parseAnnotation($property, 'autowire') !== NULL) {
             if ($mockedParameterClass = Nette\DI\PhpReflection::parseAnnotation($property, 'var')) {
                 $mockedParameterClass = Nette\DI\PhpReflection::expandClassName($mockedParameterClass, Nette\DI\PhpReflection::getDeclaringClass($property));
             }
             self::setProperty($mockedParameterClass, $property);
         }
     }
 }
开发者ID:Spameri,项目名称:DependencyMocker,代码行数:12,代码来源:Mocker.php


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