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
好的!这么晚才回复很抱歉。您只需要一个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 文件中