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)2127.0k↓14.4%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 1mo ago

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

38

—

LowBetter than 85% of packages

Maintenance38

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

559d 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://www.gravatar.com/avatar/ebfa2dc9bcd9f9f7cea1f5473811d3c3904f60716e5605ab0d7208a9a6b81f09?d=identicon)[vaened](/maintainers/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

[wnx/laravel-stats

Get insights about your Laravel Project

1.8k1.8M7](/packages/wnx-laravel-stats)[symplify/monorepo-builder

Not only Composer tools to build a Monorepo.

5205.3M82](/packages/symplify-monorepo-builder)[illuminate/session

The Illuminate Session package.

9937.4M753](/packages/illuminate-session)[civicrm/civicrm-core

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

728272.9k20](/packages/civicrm-civicrm-core)[friendsoftypo3/content-blocks

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

96374.6k23](/packages/friendsoftypo3-content-blocks)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

52664.9k12](/packages/solspace-craft-freeform)

PHPackages © 2026

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