Composer 创建本地包

Iva*_*van 4 php json composer-php

在我的项目内的vendor目录中,我创建了一个名为 的新目录,并使用名称空间Hello创建了一个新类。然后在根目录中我创建了一个带有默认元数据(, , , )的文件,并添加了 autoload PSR-4 。HelloWorld.phpHello\TestHellocomposer.jsonauthorlicensedescrequiredHello\\Test\\

那么接下来我需要做什么来自动加载我的包。我查看了一些 Symfony 组件,它们的composer.json包和配置是相同的。

是否可以像vendor这样自动加载我的本地包?

目录结构:

|-my_project
|-composer.json
|---vendor
|-------composer
|-------autoload.php
|-------Hello
|-----------composer.json
|-----------HelloWorld.php
Run Code Online (Sandbox Code Playgroud)

./vendor/Hello/composer.json

{
  "name": "Zend/Hello",
  "description": "My test package",
  "license": "MIT",
  "authors": [
    {
      "name": "Zend Zend",
      "email": "test@example.com"
    }
  ],
  "autoload": {
    "psr-4": {
      "Hello\\Test\\": ""
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的 HelloWorld.php 类有namespace Hello\Test; Inside index.phpi doinclude 'vendor/autoload.php 和 rootcomposer.json

{
  "autoload": {
    "psr-4": {
      "": "src/",
      "Hello\\Test\\": "./vendor/Hello"
    }
  },
  "require": {
    "Hello/Test": "*"
  }

}
Run Code Online (Sandbox Code Playgroud)

composer update

awo*_*yin 5

好的!这么晚才回复很抱歉。您只需要一个composer.json 即可完成这项工作。您的主项目目录中的那个。

尝试使用这个:

{
   "name": "Zend/Hello",
   "description": "My test package",
   "license": "MIT",
   "authors": [
      {
          "name": "Zend Zend",
          "email": "test@example.com"
      }
   ],
   "autoload": {
       "psr-4": {
           "Hello\\Test\\": "vendor/Hello"
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

你的 HelloWorld.php 文件应该是这样的:

<?php

namespace Hello\Test;

class HelloWorld {

    // your methods goes here
}
Run Code Online (Sandbox Code Playgroud)

运行作曲家自我更新以获取最新的作曲家运行composer update,它现在应该添加到您的供应商/作曲家/autoload_psr4.php 文件中