PHPackages                             vaened/php-tag-finder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. vaened/php-tag-finder

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

vaened/php-tag-finder
=====================

v1.0.2(1y ago)3133.0k↓44.7%MITPHPPHP ^8.2

Since Jul 28Pushed 1y ago1 watchersCompare

[ Source](https://github.com/vaened/php-tag-finder)[ Packagist](https://packagist.org/packages/vaened/php-tag-finder)[ RSS](/packages/vaened-php-tag-finder/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (5)Versions (6)Used By (0)

Tag Finder
==========

[](#tag-finder)

[![Build Status](https://github.com/vaened/php-tag-finder/actions/workflows/tests.yml/badge.svg)](https://github.com/vaened/php-tag-finder/actions?query=workflow:Tests)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](license)

Library created to simplify the search for PHP classes based on their parent class/interface.

Installation
------------

[](#installation)

You can install the library using `composer`.

```
composer require vaened/php-tag-finder
```

Usage
-----

[](#usage)

The definition of `tag` in this library is understood as an `interface` or `abstract class`.

With that in mind, to obtain, for example, all the `handlers` of a system, it would be enough to search for all the PHP classes that implement the `Handler` interface.

```
$finder  = new ClassFinder(...);
$classes = $finder->instancesOf(Handler::class);
```

This will return an associative array, where the key is the physical location of the file on disk and the value is the class it references in the project.

Configuration
-------------

[](#configuration)

The configuration consists of how to create the `ClassFinder`, for this we must understand 2 concepts, the `source` where the search will be performed, and the `namespace` that represents that location.

- **source**: the location where you will start looking for tagged classes.
- **namespace**: the representation of this location in the project.

### Example

[](#example)

Let's suppose that the project is called Ecommerce, where the namespace is also `Ecommerce\\`.

```
src
├── App
│ ├── Categories
│ │ └── CreateCategoryHandler.php
│ ├─── Products
│ │ └── CreateProductHandler.php
│ ├── Handler.php
```

So, to locate only the classes that correspond to the application, in this case you would have to instantiate the ClassFinder to search within the root of the project/App, with its equivalent for the namespace.

```
$paths  = [$rootProyectPath, 'src', 'App'];
$finder = new ClassFinder(
    implode(DIRECTORY_SEPARATOR, $paths),
    'Ecommerce\\App'
);
```

License
-------

[](#license)

This library is licensed under the MIT License. For more information, please see the [`license`](./license) file.

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance35

Infrequent updates — may be unmaintained

Popularity34

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~25 days

Total

5

Last Release

604d ago

Major Versions

v0.2 → v1.02024-08-03

PHP version history (2 changes)v0.1PHP ^8.1

v1.0PHP ^8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/15077850?v=4)[Enea Dhack](/maintainers/vaened)[@vaened](https://github.com/vaened)

---

Top Contributors

[![vaened](https://avatars.githubusercontent.com/u/15077850?v=4)](https://github.com/vaened "vaened (19 commits)")

---

Tags

findertags

### Embed Badge

![Health badge](/badges/vaened-php-tag-finder/health.svg)

```
[![Health](https://phpackages.com/badges/vaened-php-tag-finder/health.svg)](https://phpackages.com/packages/vaened-php-tag-finder)
```

###  Alternatives

[composer/composer

Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.

29.5k196.2M3.1k](/packages/composer-composer)[symfony/stimulus-bundle

Integration with your Symfony app &amp; Stimulus!

17417.5M294](/packages/symfony-stimulus-bundle)[illuminate/session

The Illuminate Session package.

9939.3M849](/packages/illuminate-session)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k43](/packages/civicrm-civicrm-core)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

54681.3k18](/packages/solspace-craft-freeform)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
