hongliang/alterload 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hongliang/alterload

Composer 安装命令:

composer require hongliang/alterload

包简介

An alternative loader to autoload

README 文档

README

Why Alterload

Alterload is an alternative loader for autoload.

Alterload is great for library developers. When developing a PHP project/application we use composer to manage dependencies. Sometimes we need to work on a dependency of the project but still need to debug/test in the project. Think of a library that's part of the project.

Before Alterload there were 2 things we could do to debug/test the library in the project:

  1. Commit new version of the library for all changes, wait for packagist to re-index, and update your composer.lock in the calling project and test.
  2. Add a "repository" to your calling project's composer.json (which you shouldn't forget to remove during commit, and put back after)

__ * Symlinking or directly edit files in the vendor directory is not to discuss __

Alterload is inspired by https://github.com/linkorb/autotune

How does it work

Making your application ready for Alterload takes 3 simple steps:

1. Include hongliang/alterload from Packagist in your composer.json file

require-dev": {
   "hongliang/alterload": "~1.0"
}

2. Initialize Alterload 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('Alterload\Loader')) {
    \Alterload\Loader::alter($loader);
}

Wrapping the call to alter in the class_exists block ensures alterload is only used if Alterload 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 .alterload.ini file to your project root.

psr-4:Monolog\Logger\ = /Users/me/git/monolog/monolog/src/Monolog
psr-0:Monolog\Logger\ = /Users/me/git/monolog/monolog/src/Monolog/Monolog/Monolog
;psr-4:Monolog\Logger\ = /this/is/commentted/out

Ideally you'd add the .alterload.ini 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 .alterload.ini file.

Symlink a dependency

Sometimes we also want to use other assets (templates, js, images,...) in the depending library instead of only the PHP classes. In this case we can use the vendor/bin/alterload link command to symlink a library (in the vendor directory) to the local library.

Simply add link: in front of the .alterload.ini line:

link:psr-4:Monolog\Logger\ = /Users/me/git/monolog/monolog/src/Monolog

Then run the command from your application directory:

vendor/bin/alterload link

License

MIT (see LICENSE.md)

统计信息

  • 总下载量: 13
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-06-01

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固