Subiendo proyecto completo sin restricciones de git ignore

This commit is contained in:
Jose Sanchez
2023-08-17 11:44:02 -04:00
parent a0d4f5ba3b
commit 20f1c60600
19921 changed files with 2509159 additions and 45 deletions

View File

@@ -0,0 +1,81 @@
<?php
namespace MercadoPago;
use Doctrine\Common\Annotations\Reader;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Annotations\AnnotationRegistry;
/**
* MetaDataReader Class Doc Comment
*
* @package MercadoPago
*/
class MetaDataReader
{
/**
* @var Reader
*/
private $_reader;
/**
* MetaData constructor.
*
* @param Reader $reader
*/
public function __construct()
{
AnnotationRegistry::registerFile(__DIR__ . '/Annotation/RestMethod.php');
AnnotationRegistry::registerFile(__DIR__ . '/Annotation/RequestParam.php');
AnnotationRegistry::registerFile(__DIR__ . '/Annotation/Attribute.php');
AnnotationRegistry::registerFile(__DIR__ . '/Annotation/DenyDynamicAttribute.php');
$this->_reader = new AnnotationReader();
return $this;
}
/**
* @param $entity
*
* @return \stdClass
*/
public function getMetaData($entity)
{
if (get_parent_class($entity)){
$result = $this->getMetaData(get_parent_class($entity));
}else {
$result = new \stdClass;
}
$propertyAnnotations = [];
$class = new \ReflectionClass($entity);
$classAnnotations = $this->_reader->getClassAnnotations($class);
foreach ($class->getProperties() as $key => $value) {
$annotation = $this->_reader->getPropertyAnnotations(new \ReflectionProperty($entity, $value->name));
if (count($annotation)) {
$propertyAnnotations[$value->name] = array_pop($annotation);
}
}
foreach ($classAnnotations as $annotation) {
if ($annotation instanceof \MercadoPago\Annotation\RestMethod) {
$result->methods[$annotation->method] = get_object_vars($annotation);
}
if ($annotation instanceof \MercadoPago\Annotation\RequestParam) {
$result->params[] = $annotation->param;
}
if ($annotation instanceof \MercadoPago\Annotation\DenyDynamicAttribute) {
$result->denyDynamicAttribute = true;
}
}
foreach ($propertyAnnotations as $key => $annotation) {
if ($annotation instanceof \MercadoPago\Annotation\Attribute) {
$result->attributes[$key] = get_object_vars($annotation);
}
}
return $result;
}
}