1. Go to this page and download the library: Download vox/metadata library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
vox / metadata example snippets
$factory = (new MetadataFactoryFactory(debug: false))->createAnnotationMetadataFactory();
$factory = (new MetadataFactoryFactory(debug: true))->createYmlMetadataFactory(__DIR__ . '/../metadata');
/**
* @param string $metadataClassName the fqcn to be used as class metadata holder, must implement the interface
* @param Reader|null $reader the desired annotation reader, a custom one can be derived from the doctrine interface
* @param string $methodMetadataClassName the fqcn to be used as method metadata holder, must implement the interface
* @param string $propertyMetadataClassName the fqcn to be used as property metadata holder, must implement the interface
*
* @return MetadataFactory
*/
public function createAnnotationMetadataFactory(
string $metadataClassName = ClassMetadata::class,
Reader $reader = null,
string $methodMetadataClassName = MethodMetadata::class,
string $propertyMetadataClassName = PropertyMetadata::class
);
/**
* @param string $metadataPath the path for the folder containing the metadata yaml files
* @param string $metadataClassName the fqcn to be used as class metadata holder, must implement the interface
* @param string $methodMetadataClassName the fqcn to be used as method metadata holder, must implement the interface
* @param string $propertyMetadataClassName the fqcn to be used as property metadata holder, must implement the interface
* @param string $yamlExtension the desired extension for the yaml files
*
* @return MetadataFactory
*/
public function createYmlMetadataFactory(
string $metadataPath,
string $metadataClassName = ClassMetadata::class,
string $methodMetadataClassName = MethodMetadata::class,
string $propertyMetadataClassName = PropertyMetadata::class,
string $yamlExtension = 'yaml'
);
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Component\Cache\Psr16Cache;
use Vox\Metadata\Cache\PsrSimpleCacheAdapter;
$factory = (new MetadataFactoryFactory(true))->createAnnotationMetadataFactory();
$factory->setCache(new PsrSimpleCacheAdapter(new Psr16Cache(new FileSystemAdapter())));
/**
* @Annotation
* @NamedArgumentConstructor
* @Target({"CLASS", "METHOD", "PROPERTY"})
*/
#[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::TARGET_PROPERTY)]
class TestAnnotation
{
/**
* @var string
*/
public string $name = 'default';
public function __construct($name = 'default')
{
$this->name = $name;
}
}
/**
* @Controller()
*/
class SomeAnnotatedClass {
private SomeService $service;
/**
* @var SomeType
*/
private $someType;
#[Get('/{id}')]
public function getData(int $id) {}
}