Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/muratpurc/mpautoloaderclassmap
PHP autoloader class map configuration file generator
https://github.com/muratpurc/mpautoloaderclassmap
Last synced: 8 days ago
JSON representation
PHP autoloader class map configuration file generator
- Host: GitHub
- URL: https://github.com/muratpurc/mpautoloaderclassmap
- Owner: muratpurc
- Created: 2019-11-18T14:18:38.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-16T16:39:59.000Z (almost 2 years ago)
- Last Synced: 2024-12-07T03:39:31.213Z (28 days ago)
- Language: PHP
- Homepage:
- Size: 28.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# AutoloaderClassMap
A PHP based class map generator and autoloader for usage with [composer](https://getcomposer.org/) or
directly in PHP projects.Is able to parse several defined directories/files for existing `class`/`interface`/`trait` definitions and
to generate a class map configuration file which is usable for an autoloader implementation.---
## Installation
### Install using composer
```sh
composer require purc/autoloader-class-map
```**NOTE:** You may need to update your `minimum-stability` definition to `dev` in your `composer.json`
in order to install this package.```json
{
"minimum-stability": "dev"
}
```### Install via git clone
Open your command line tool, clone the repository, change to the directory, and run composer.
```sh
# Clone from GitHub
$ git clone https://github.com/muratpurc/mpAutoloaderClassMap# Change to the package folder
$ cd mpAutoloaderClassMap# Run composer
$ composer install
```### Download from GitHub with bash
Open bash, download the latest version (see the latest tag) from GitHub, extract the archive, change to the directory, and run composer.
```sh
# Download release
$ curl -s -L https://github.com/muratpurc/mpAutoloaderClassMap/archive/refs/tags/0.2.1.tar.gz -o mpAutoloaderClassMap-0.2.1.tar.gz# Extract archive
$ tar -xzf mpAutoloaderClassMap-0.2.1.tar.gz# Change to the extracted folder
$ cd mpAutoloaderClassMap-0.2.1# Run composer
$ composer install
```### Manually download from GitHub
Download the zip package from [GitHub](https://github.com/muratpurc/mpAutoloaderClassMap) and extract it to a folder.
Open your command line tool, change to the extracted folder and run composer.
```sh
$ composer install
```---
## Description
Loading required class/interface/trait files, in PHP can be done via different ways.
A project should ideally use the autoloading standard as defined in the [PSR-4](https://www.php-fig.org/psr/psr-4/),
but this is not possible in some cases, e.g. when you have to deal with legacy code, which was implemented way
before the existence of the PHP Standard Recommendation ([PSR](https://www.php-fig.org/psr/)).If the project is not PSR-4 compatible and/or there is no way to map automatically required
`class`/`interface`/`trait` names to file system location, and you want to get rid of all `require`/`include`
statements in your PHP files, then using a class map configuration is probably the convenient solution.The AutoloaderClassMap parses specific folders for `class`, `interface`, and `trait` definitions, and generates
a class map file from the parse results. The class map file can be used with a custom autoloader implementation,
which deals with loading the required source files, the first time you use one of the class, interface or trait
names in your PHP scripts.----
## Class Map Generator Options
There a some options to control class map creation described as follows:
### `excludeDirs`
(`string[]`) List of directories to ignore (note: is case-insensitive)
Default value is `['.svn', '.cvs']`.
### `excludeFiles`
(`string[]`) List of files to ignore, regexp pattern is also accepted (note: is case insensitive)
Default value is `['/^~*.\.php$/', '/^~*.\.inc$/']`
### `extensionsToParse`
(`string[]`) List of file extensions to parse (note: is case-insensitive)
Default value is `['.php', '.inc']`
### `enableDebug`
(`bool`) Flag to enable debugging, collects some helpful state information's
Default value is `false`
---
## Setting an Environment Variable or PHP $GLOBAL
The AutoloaderClassMap comes with a build-in `Autoloader` implementation, see [Autoloader.php](./src/Autoloader.php).
You need to define the path to your class map file in order to use the build-in `Autoloader`.
This can be done by defining an environment variable or by setting the PHP superglobal `$GLOBAL` variable.### Environment Variable
There are different ways to set an environment variable, use the solution which fits the best for your needs.
1. Setting the environment variable in a `.env` file, in case your project supports dotenv.
```
PURC_AUTOLOADER_CLASS_MAP_FILE=/path/to/your/class_map_file.php
```2. Setting the environment variable in a `.htaccess` file, in case your project is served via Apache.
```
SetEnv PURC_AUTOLOADER_CLASS_MAP_FILE /path/to/your/class_map_file.php
```3. Setting the environment variable in a PHP script, e.g. at the beginning of the application bootstrap process.
This must be done before using an entry defined in the class map file!```php