linkorb / autotune
Tune your autoloader
Installs: 5 407
Dependents: 17
Suggesters: 0
Security: 0
Stars: 17
Watchers: 5
Forks: 0
Open Issues: 0
Requires (Dev)
- phpunit/phpunit: ~5.0
- psr/log: ^1.0
This package is auto-updated.
Last update: 2024-11-29 04:14:30 UTC
README
Why use AutoTune for Composer?
AutoTune is great for library developers.
Often you're working on a library and the calling application at the same time.
Before AutoTune there were 2 things you could do to test your library in your application:
- Commit new version of the library for all changes, wait for packagist to re-index, and update your composer.lock in the calling application and test.
- Add a "repository" to your calling application's composer.json (which you shouldn't forget to remove during commit, and put back after)
Both are cumbersome. This is where AutoTune comes in!
How does autotune work?
AutoTune expects to find a autotune.json
in your calling application's path, next to composer.json. Here's an example:
{ "autoload": { "psr-4": { "Monolog\\": "~/git/monolog/monolog/src/Monolog" } } }
If this file is found, it will read the contents, and override any psr-0 or psr-4 namespaces with the local version as defined in your autotune.json file.
You can add the autotune.json to your .gitignore
file, so that you can keep your code directory clean and in sync with the remote repository.
Making your own application ready for AutoTune
Making your own application ready for AutoTune takes 3 simple steps:
1. Include linkorb/autotune
from Packagist in your composer.json file
require-dev": { "linkorb/autotune": "~1.0" }
Then run composer update
2. Initialize AutoTune in your app
Somewhere in your application, you're including vendor/autoload.php
. Sometimes it's in web/index.php
or bin/console
. Find this location, and modify add these lines:
$loader = require_once __DIR__.'/../vendor/autoload.php'; if (class_exists('AutoTune\Tuner')) { \AutoTune\Tuner::init($loader); }
Wrapping the call to init
in the class_exists
block ensures autotune is only used if AutoTune is installed in your (development) environment (installed from the require-dev block in composer.json). In production environments it won't be called if you install your dependencies with --no-dev
)
3. Add an autotune.json
file to your project root.
Example content:
{ "autoload": { "psr-4": { "Monolog\\": "~/git/monolog/monolog/src/Monolog" } } }
Ideally you'd add the autotune.json
to your .gitignore
file.
Done
Whenever your application is doing something like the following, it will load the "local" version of a library, instead of the one in your vendor/
directory.
$logger = new \Monolog\Logger('example');
So from now on, no changes are required to your main application. Everything is managed by your local autotune.json
file.
License
MIT (see LICENSE.md)
Brought to you by the LinkORB Engineering team
Check out our other projects at linkorb.com/engineering.
Btw, we're hiring!