Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/theseer/autoload
A lightweight php namespace aware autoload generator and phar archive builder
https://github.com/theseer/autoload
Last synced: about 22 hours ago
JSON representation
A lightweight php namespace aware autoload generator and phar archive builder
- Host: GitHub
- URL: https://github.com/theseer/autoload
- Owner: theseer
- License: other
- Created: 2009-11-21T22:18:19.000Z (about 15 years ago)
- Default Branch: master
- Last Pushed: 2024-10-06T21:41:05.000Z (3 months ago)
- Last Synced: 2024-10-29T15:48:30.422Z (2 months ago)
- Language: PHP
- Homepage:
- Size: 1.68 MB
- Stars: 387
- Watchers: 15
- Forks: 47
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# PHP Autoload Builder
The PHP AutoloadBuilder CLI tool **phpab** is a command line application to automate the process of generating
an autoload require file with the option of creating static require lists as well as phar archives.## Features
* scan multiple directories recursively in one run, optionally follow symlinks, wildcards or based on composer.json
* Cache scan results
* Template based autoload code
* Custom variables for templates
* Compatibility mode for PHP 5.2 compliant autoloader
* Case sensitive as well as case insensitive classname mapping
* Phar generation, with or without compression and openssl key signing
* Static require list generation
* Opcache warming list generation
* Linting of generated code## Requirements
* PHP 5.3+ (Runtime, for development / tests: 7.2+)
* Fileinfo (ext/fileinfo)
* Tokenizer (ext/tokenizer)
* For PHAR generation support:
+ ext/phar (write enabled: phar.readonly = Off)
+ ext/gzip (optional)
+ ext/bzip2 (optional)
+ ext/openssl (optional, for phar signing only)## Installation
### Executable PHAR
The recommended way to install **phpab** is by using [phive](https://phar.io):
```
phive install phpab
```#### Manual install
If you do not have phive installed or want to install manually, you can download the PHAR archive
from the [Releases](https://github.com/theseer/Autoload/releases) tab._Please note:_
On Linux/Unix based system the phar needs to be marked executable for direct execution:
```
[theseer@rikka ~]$ chmod +x phpab*.phar
```## Other Downloads
* [Latest development snapshot](https://github.com/theseer/Autoload/archive/master.zip) (ZIP Archive)
* [Releases (Source)](https://github.com/theseer/Autoload/tags)## Usage
```
Usage: phpab [switches] [...]-i, --include File pattern to include (default: *.php)
-e, --exclude File pattern to exclude--blacklist Blacklist classname or namespace (wildcards supported)
--whitelist Whitelist classname or namespace (wildcards supported)-b, --basedir Basedir for filepaths
-t, --template Path to code template to use-o, --output Output file for generated code (default: STDOUT)
-p, --phar Create a phar archive (requires -o )
--all Include all files in given directory when creating a phar
--alias Specify explicit internal phar alias filename (default: output filename)
--hash Force given hash algorithm (SHA-1, SHA-256 or SHA-512) (requires -p, conflicts with --key)
--bzip2 Compress phar archive using bzip2 (requires -p) (bzip2 required)
--gzip Compress phar archive using gzip (requires -p) (gzip required)
--key OpenSSL key file to use for signing phar archive (requires -p) (openssl required)-c, --compat Generate PHP 5.2 compatible code
-s, --static Generate a static require file
-w, --warm Generate a static opcache warming file
--reset Add opcache reset call when generating opcache warming file-1, --prepend Register as first autoloader (prepend to stack, default: append)
-d, --no-exception Do not throw exception on registration problem (default: throw exception)-n, --nolower Do not lowercase classnames for case insensitivity
-q, --quiet Quiet mode, do not output any processing errors or information
--cache Enable caching and set filename to use for cache storage
--follow Enables following symbolic links (not compatible with phar mode)
--format Dateformat string for timestamp
--linebreak Linebreak style (CR, CRLF or LF, default: LF)
--indent String used for indenting or number of spaces (default: 16 (compat 12) spaces)--tolerant Ignore Class Redeclarations in the same file
--once Use require_once instead of require when creating a static require file--trusting Do not check mimetype of files prior to parsing (default)
--paranoid Do check mimetype of files prior to parsing--var name=foo Assign value 'foo' to variable 'name' to be used in (custom) templates
--lint Run lint on generated code and exit
--lint-php PHP binary to use for linting (default: /usr/bin/php or c:\php\php.exe)-h, --help Prints this usage information
-v, --version Prints the version and exits
```### Usage Examples
[theseer@rikka ~]$ phpab -o src/autoload.php -b src composer.json
[theseer@rikka ~]$ phpab -o opcache_warming.php -w --reset src
[theseer@rikka ~]$ phpab -o src/autoload.inc.php src
[theseer@rikka ~]$ phpab -c -o src/autoload.inc.php src
[theseer@rikka ~]$ phpab -o src/core/autoload.inc.php -b src src
[theseer@rikka ~]$ phpab -p -o framework.phar -b src composer.json
[theseer@rikka ~]$ phpab -p -o framework.phar framework/src
[theseer@rikka ~]$ phpab -p -o framework.phar --bzip2 --key sign.key framework/src
[theseer@rikka ~]$ phpab -b . --tolerant -o zf1_autoload.php -e '*/Test/*' Zend
### Automation
When using *phpab* it is necessary to recreate the autoload file every time a new class is created.
This usually also happens after pulling from a repo or when switchting branches.
Using a git `post-checkout` hook placed in `.git/hooks/post-update` this can be automated for most cases.#### Basic Sample:
```bash
#!/bin/bash
phpab -c -o src/autoload.inc.php src
```#### Sample using an `ant build.xml` file.
```bash
#!/bin/bash
if [ -f build.xml ]; then
ant -p | grep phpab > /dev/nullif [ $? -eq 0 ]; then
ant phpab > /dev/null &
fi
fi
```## Template Variables
The generated code is based uppon templates provided by default in the templates subfolder. The template engine
allows for simply replacing of name based placeholders. For now, only a few default variables are defined
but API hooks / CLI parameters exist to set custom variables.Known variables are:
* ```___CREATED___``` Set to a timestamp of creation, format can be adjusted
* ```___CLASSLIST___``` The found list classes in form of a generated map
* ```___BASEDIR___``` If a Basedir is set, the value will get removed from the file path and get replaced by __DIR__Used in PHAR Mode only:
* ```___PHAR___``` The filename of the generated phar or it's alias when --alias is given (see src/templates/phar.php.tpl)Custom variables as defined by passing --var name=value via cli are accessed by pre- and appending ___ to it:
* ```___name___``` Going to be replaced by the value provided via cli param## Changelog
The [changelog](https://github.com/theseer/Autoload/blob/master/CHANGELOG.md) moved to its own document