psychob/reflection-file

Reflection File implementation

2.0 2025-01-26 00:38 UTC

This package is auto-updated.

Last update: 2025-03-26 03:53:35 UTC


README

Latest Stable Version License PHP Version

A powerful PHP library for analyzing PHP files through reflection. This library extends PHP's native reflection capabilities by allowing you to examine PHP files without loading them into memory, providing information about classes, interfaces, traits, and other declarations.

Features

  • Analyze PHP files without executing them
  • Extract information about:
    • Namespaces
    • Classes (including abstract classes)
    • Interfaces
    • Traits
    • Functions
    • Objects
    • Enums
  • Lazy loading support for better performance
  • Safe file parsing

Requirements

  • PHP 8.3 or higher
  • Composer

Installation

Install via Composer:

composer require psychob/reflection-file

Usage

Basic Usage

<?php
use PsychoB\ReflectionFile\ReflectionFile;

$reflection = new ReflectionFile('path/to/your/file.php');

// Get all class names
$classes = $reflection->getNamesOfClasses();

// Get all interfaces
$interfaces = $reflection->getNamesOfInterfaces();

// Get all traits
$traits = $reflection->getNamesOfTraits();

// Get namespace information
$namespace = $reflection->getFirstNameOfNamespace();

Performance Optimization

The library supports deferred parsing and loading for better performance:

<?php
use PsychoB\ReflectionFile\ReflectionFile;

// Defer both parsing and loading until needed
$reflection = new ReflectionFile(
    'path/to/file.php',
    deferParsing: true,
    deferLoading: true
);

// Only parse when needed
$classes = $reflection->getNamesOfClasses(); // Triggers parsing

// Manual control over loading
$reflection->load(); // Explicitly load the file

Advanced Features

Namespace Analysis

$namespaces = $reflection->getNamesOfNamespaces();
$firstNamespace = $reflection->getFirstNameOfNamespace();

Class Analysis

$classes = $reflection->getNamesOfClasses();
$abstractClasses = $reflection->getNamesOfAbstractClasses();

Other Declarations

$interfaces = $reflection->getNamesOfInterfaces();
$traits = $reflection->getNamesOfTraits();
$functions = $reflection->getNamesOfFunctions();
$enums = $reflection->getNamesOfEnums();

Security Considerations

This library parses PHP files. Always ensure you're analyzing trusted files, as parsing untrusted PHP files could potentially expose your application to security risks.

License

This project is licensed under the Mozilla Public License Version 2.0 - see the LICENSE file for details.

Author