jms/metadata

Class/method/property metadata management in PHP

Maintainers

👁 johannes

Package info

github.com/schmittjoh/metadata

pkg:composer/jms/metadata

Statistics

Installs: 159 179 356

Dependents: 109

Suggesters: 0

Stars: 1 821

Open Issues: 8

2.9.0 2025-11-30 20:12 UTC

Requires

  • php: ^7.2|^8.0

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 554319d2e5f0c5d8ccaeffe755eac924e14da330

  • Johannes M. Schmitt <schmittjoh.woop@gmail.com>
  • Asmir Mustafic <goetas.woop@gmail.com>

annotationsyamlxmlmetadata


README

Master (2.x) 1.x
👁 Build status
👁 Build status
👁 Coverage Status
👁 Coverage Status

Overview

This library provides some commonly needed base classes for managing metadata for classes, methods and properties. The metadata can come from many different sources (annotations, YAML/XML/PHP configuration files).

The metadata classes are used to abstract away that source and provide a common interface for all of them.

Usage

The library provides three classes that you can extend to add your application specific properties, and flags: ClassMetadata, MethodMetadata, and PropertyMetadata

After you have added, your properties in sub-classes, you also need to add DriverInterface implementations which know how to populate these classes from the different metadata sources.

Finally, you can use the MetadataFactory to retrieve the metadata::

<?php
 
use Metadata\MetadataFactory;
use Metadata\Driver\DriverChain;

$driver = new DriverChain(array(
 /** Annotation, YAML, XML, PHP, ... drivers */
));
$factory = new MetadataFactory($driver);
$metadata = $factory->getMetadataForClass('MyNamespace\MyObject');