PHP code example of likun-mci / php-composer

1. Go to this page and download the library: Download likun-mci/php-composer library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

likun-mci / php-composer example snippets






use PhpComposer\Composer;

$composer = new Composer('/path/to/your/project');

// 创建 composer.json
$composer->init(['name' => 'acme/demo']);

// 添加依赖(不写版本则自动选取最新稳定版)
$composer->

[
    'ok'      => true,
    'message' => '依赖安装完成。',
    'data'    => [
        'summary'    => ['install' => 2, 'update' => 0, 'uninstall' => 0],
        'operations' => [ ['type' => 'install', 'package' => 'psr/log', ...], ... ],
        'packages'   => [ ['name' => 'psr/log', 'version' => '3.0.2', ...], ... ],
        'elapsed'    => 12.34,
    ],
    'log'     => ['安装 psr/log 3.0.2', ...],
]

use PhpComposer\Console\Application;

$app = new Application('/path/to/project', [], $io);

// 字符串或 argv 数组都行
$result = $app->run('update --prefer-dist --with-all-dependencies vendor/pkg');
$result = $app->run(['update', '--prefer-dist', '-W', 'vendor/pkg']);

$composer = new Composer('/path/to/project', [
    'repo-url'             => 'https://mirrors.aliyun.com/composer',
    'timeout'              => 60,
    'concurrency'          => 8,      // 并行下载数
    'optimize-autoloader'  => true,
    'sort-packages'        => true,
    'preferred-install'    => 'dist',
    'disable-curl'         => false,  // 强制走 stream
    'secure-http'          => true,   // 拒绝明文 HTTP
    'platform'             => ['php' => '8.1.0'],  // 按目标服务器求解,见下
]);

$composer->useMirror('aliyun');  // packagist / aliyun / tencent / huawei / ustc

new Composer($dir, [
    // 统一代理
    'proxy' => 'socks5h://127.0.0.1:1080',

    // 或按协议分别指定(优先于 proxy)
    'http-proxy'  => 'http://127.0.0.1:8080',
    'https-proxy' => 'socks5://127.0.0.1:1080',

    // 例外名单:支持精确主机、子域、CIDR、带端口、通配符
    'no-proxy' => 'localhost, .internal.corp, 10.0.0.0/8, example.com:8080',

    // 凭据也可从地址里拆出来单独写
    'proxy-user'      => 'username',
    'proxy-password'  => 'password',
    'proxy-auth-type' => 'basic',   // basic(默认) / digest / ntlm / negotiate / any
]);

$composer->status()['data']['proxy'];
// ['http' => 'socks5h://user:***@127.0.0.1:1080', 'https' => ..., 'no_proxy' => ...]

new Composer($dir, [
    'auth' => [
        'satis.example.com' => ['type' => 'basic', 'username' => 'u', 'password' => 'p'],
        'gitlab.example.com' => ['type' => 'bearer', 'token' => 'xxx'],
    ],
]);
bash
composer 
bash
export PHPCOMPOSER_PROJECT=/var/www/myapp   # 被管理的项目目录
export PHPCOMPOSER_TOKEN=your-secret-token  # 访问令牌(务必设置)
json
{
    "config": {
        "platform": {
            "php": "8.1.0",
            "ext-redis": false
        }
    }
}
bash
export HTTPS_PROXY=socks5h://127.0.0.1:1080
export HTTP_PROXY=http://127.0.0.1:8080
export ALL_PROXY=socks5://127.0.0.1:1080     # 前两者的兜底
export NO_PROXY=localhost,.internal.corp
bash
php tests/semver_test.php              # 版本约束语义(81 个用例)
php tests/manipulator_test.php         # composer.json 保留格式的修改(12 个用例)
php tests/solver_backtrack_test.php    # 依赖求解与回溯(14 个场景)
php tests/proxy_test.php               # 代理解析、no-proxy、环境变量、httpoxy 防护(21 个用例)
php tests/classmap_test.php            # 类名提取与 classmap 生成(23 个用例)
php tests/polyfill_test.php            # polyfill 与原生实现对拍(66 个用例)
php tests/php71_compat_test.php        # PHP 7.1 语法兼容性(防止用上 7.2+ 语法)
php tests/console_test.php             # 命令行解析,重点是未知参数必须报错(29 个用例)
php tests/options_test.php             # 命令行选项的端到端语义(42 个用例)
php tests/update_test.php              # update 不被 lock 里的旧版本堵死(9 个用例)
bash
php tests/network/lifecycle_test.php   # 完整生命周期:init→