mpyw / comphar
将所有composer依赖打包成一个单个的phar文件
v1.0.1
2019-02-16 17:14 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-09-09 09:46:17 UTC
README
Composer + Phar
将所有composer依赖打包成一个单个的phar文件。
安装
1. 执行composer全局安装
通过Packagist安装。
example@localhost:~$ composer global require mpyw/comphar:^1.0 Changed current directory to /Users/mpyw/.composer ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) - Installing mpyw/comphar (dev-master XXXXXXX) Cloning XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Writing lock file Generating autoload files example@localhost:~$
2. 更新$PATH
如果尚未这样做,您必须将~/.composer/vendor/bin
添加到$PATH。
将以下语句追加到~/.bashrc
、~/.zshrc
等文件中。
export PATH="~/.composer/vendor/bin:$PATH"
用法
example@localhost:~$ comphar -h Usage: ./comphar [options] Options: -h, --help Show help. -v, --verbose Verbose output. -o, --out <value> Output archive name. Default to "vendor.phar". -d, --dir <value> Project root directory. Default to getcwd(). --yes Without confirmation. example@localhost:~$
示例
1. 准备您的仓库
准备composer.json
。
{ "name": "mpyw/my-new-package", "description": "This is a stupid example", "require": { "mpyw/my-dependency-1": "@dev", "mpyw/my-dependency-2": "1.0.0", }, "autoload": { "psr-4": { "mpyw\\MyNewPackage\\": "src/" } } }
2. 生成vendor.phar
让我们在那个目录下生成vendor.phar
。
example@localhost:~/my-new-package$ composer update Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Writing lock file Generating autoload files example@localhost:~/my-new-package$ comphar -v Project directory: ~/my-new-package Output filename: ~/my-new-package/vendor.phar Continue? [y/n]: y Added: ... Added: ... Added: ... Added: ... Added: ... example@localhost:~/my-new-package$
注意
即使您没有依赖,也必须调用composer install
或composer update
来调整自己的库以自动加载。
3. 享受
您可以使用vendor.phar
以及常规的vendor/autoload.php
。
最简单的用法
<?php use mpyw\MyNewPackage\Foo; require __DIR__ . '/vendor.phar'; $foo = new Foo();
添加自己的自动加载
<?php use mpyw\MyNewPackage\Foo; use mpyw\MyOtherPackage\Bar; $loader = require __DIR__ . '/vendor.phar'; $loader->addPsr4('mpyw\\MyOtherPackage\\', '~/my-other-package/src'); $foo = new Foo(); $bar = new Bar();
错误:权限被拒绝
您可能会遇到“权限被拒绝”的错误
example@localhost:~/my-new-package$ comphar -v Error: Permission denied: Disable "phar.readonly" and "phar.require_hash"
在这种情况下,您需要调整“php.ini”中的配置
[Phar]
; https://php.ac.cn/phar.readonly
phar.readonly = Off
; https://php.ac.cn/phar.require-hash
phar.require_hash = Off