{"id":16760762,"url":"https://github.com/jerowork/class-dependencies-parser","last_synced_at":"2026-02-01T02:31:58.090Z","repository":{"id":65021833,"uuid":"580883330","full_name":"jerowork/class-dependencies-parser","owner":"jerowork","description":"Parse all dependencies (FQN) used in a class (e.g. class, trait, interface, enum).","archived":false,"fork":false,"pushed_at":"2023-06-19T06:06:14.000Z","size":179,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-11T14:11:04.906Z","etag":null,"topics":["dependencies","fcqn","fqn","parser","reflection"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jerowork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-12-21T17:38:28.000Z","updated_at":"2024-09-30T01:39:44.000Z","dependencies_parsed_at":"2025-06-20T05:36:53.095Z","dependency_job_id":"e83d1d62-98a9-4b11-bf66-96ecead4b113","html_url":"https://github.com/jerowork/class-dependencies-parser","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/jerowork/class-dependencies-parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerowork%2Fclass-dependencies-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerowork%2Fclass-dependencies-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerowork%2Fclass-dependencies-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerowork%2Fclass-dependencies-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jerowork","download_url":"https://codeload.github.com/jerowork/class-dependencies-parser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerowork%2Fclass-dependencies-parser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28965361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T02:14:24.993Z","status":"ssl_error","status_checked_at":"2026-02-01T02:13:55.706Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependencies","fcqn","fqn","parser","reflection"],"created_at":"2024-10-13T04:24:29.761Z","updated_at":"2026-02-01T02:31:58.055Z","avatar_url":"https://github.com/jerowork.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# class-dependencies-parser\n[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fjerowork%2Fclass-dependencies-parser%2Fbadge%3Fref%3Dmain\u0026style=flat-square)](https://github.com/jerowork/class-dependencies-parser/actions)\n[![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/jerowork/class-dependencies-parser.svg?style=flat-square)](https://scrutinizer-ci.com/g/jerowork/class-dependencies-parser/code-structure)\n[![Quality Score](https://img.shields.io/scrutinizer/g/jerowork/class-dependencies-parser.svg?style=flat-square)](https://scrutinizer-ci.com/g/jerowork/class-dependencies-parser)\n[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE)\n[![Packagist Version](https://img.shields.io/packagist/v/jerowork/class-dependencies-parser.svg?style=flat-square\u0026include_prereleases)](https://packagist.org/packages/jerowork/class-dependencies-parser)\n[![PHP Version](https://img.shields.io/badge/php-%5E8.1-8892BF.svg?style=flat-square)](http://www.php.net)\n\nParse all dependencies (FQN) used in a class (e.g. class, trait, interface, enum).\n\n## Installation\nInstall via [Composer](https://getcomposer.org/):\n\n```bash\ncomposer require jerowork/class-dependencies-parser\n```\n\n## Usage\n```php\nuse Jerowork\\ClassDependenciesParser\\PhpParser\\NodeTraverserFactory;\nuse Jerowork\\ClassDependenciesParser\\PhpParser\\PhpParserClassDependenciesParser;\nuse PhpParser\\ParserFactory;\n\n// Setup parser\n$parser = new PhpParserClassDependenciesParser(\n    (new ParserFactory())-\u003ecreate(ParserFactory::PREFER_PHP7),\n    new NodeTraverserFactory(),\n);\n\n// Parse file\n$classDependencies = $parser-\u003eparse('/Path/To/file.php');\n\n// Output dependencies\nprint_r(\n    $classDependencies-\u003egetDependencyList(),\n);\n\n// This will output e.g.:\n[\n    'Some/Namespace/Class',\n    'Another/Namespace/Trait',\n    // ...\n]\n```\n\n## DI service definition\n\nAs a good practice we should always 'program to interfaces, not implementations', you should add this to your DI container.\n\nPSR-11 Container example:\n```php\nuse Jerowork\\ClassDependenciesParser\\ClassDependenciesParser;\nuse Jerowork\\ClassDependenciesParser\\PhpParser\\NodeTraverserFactory;\nuse Jerowork\\ClassDependenciesParser\\PhpParser\\PhpParserClassDependenciesParser;\nuse PhpParser\\ParserFactory;\n\nreturn [\n    ClassDependenciesParser::class =\u003e static function (ContainerInterface $container): ClassDependenciesParser {\n        return new PhpParserClassDependenciesParser(\n            (new ParserFactory())-\u003ecreate(ParserFactory::PREFER_PHP7),\n            new NodeTraverserFactory(),\n        );\n    },\n];\n```\nSymfony YAML-file example:\n```yaml\nservices:\n  _defaults:\n    autowire: true\n    autoconfigure: true\n\n  Jerowork\\ClassDependenciesParser\\ClassDependenciesParser:\n    class: Jerowork\\ClassDependenciesParser\\PhpParser\\PhpParserClassDependenciesParser\n\n  Jerowork\\ClassDependenciesParser\\PhpParser\\NodeTraverserFactory: ~\n\n  PhpParser\\ParserFactory: ~\n\n  PhpParser\\Parser:\n    factory: ['@PhpParser\\ParserFactory', 'create']\n    arguments:\n      $kind: 1\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerowork%2Fclass-dependencies-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjerowork%2Fclass-dependencies-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerowork%2Fclass-dependencies-parser/lists"}