如何使用Composer从本地存储库加载php类?
我不熟悉Php和composer,我想使用composer访问另一个模块的Php类,这是我的基本项目结构(两个模块common和worker) index.php如何使用Composer从本地存储库加载php类?,php,json,composer-php,psr-0,psr-4,Php,Json,Composer Php,Psr 0,Psr 4,我不熟悉Php和composer,我想使用composer访问另一个模块的Php类,这是我的基本项目结构(两个模块common和worker) index.php TestLocalRepository --/Souce Files --/common --/vendor --/canvass --/test --test.php --/composer
TestLocalRepository
--/Souce Files
--/common
--/vendor
--/canvass
--/test
--test.php
--/composer
--autoload.php
--composer.json
--/worker
--/vendor
--/composer
composer.json
temocaller.php
--index.php
common/vendor/canvass/test.php
<?php
namespace test;
class test {
//put your code here
function __construct() {
echo "hello";
}
}
?>
worker/composer.json
{
"name":"canvass/test",
"type":"package",
"version": "1.0.0"
}
{
"autoload": {
"psr-4": {
"test":"../common/vendor/canvass"
}
}
}
worker/tempcaller.php
<?php
require_once dirname(__FILE__) . '../vendor/autoload.php';
use test;
class tempcaller {
//put your code here
function __construct() {
echo "tempcaller";
$obj = new test();
}
}
$t = new tempcaller();
?>
我也不能用psr-0或存储库这样做,有什么方法可以做到这一点吗?您在这里展示的是一个项目
TestLocalRepository
,它由源文件夹中的两个独立的编写器项目common
和worker
组成,他们每个人都有一个composer.json文件和自己的供应商文件夹。
我认为你们的项目结构不是最优的
在我看来,您可以将这两个项目放在主项目的供应商文件夹中,而不是源文件夹中。我的建议是使用一个项目TestLocalRepository
,并将模块common
和worker
作为该项目的依赖项(在composer.json
中)
你会得到这样一个结构:
TestLocalRepository
- composer.json
+- src
- index.php
+- vendor
- autoload.php
+- common
+- worker
- temocaller.php
现在:在composer更新中
,将获取依赖项common和worker并将其放入供应商文件夹,然后生成自动加载。
然后,在src/index.php
中,只需包含require'vendor/autoload.php'
和$t=新测试/temocaller()代码>
如果这不是您想要的,那么您仍然可以使用Composer Autoloader
并为类添加自定义位置。
在index.php中:首先需要自动加载程序,然后将文件夹添加到自动加载类中,如下所示:
$loader = require 'vendor/autoload.php';
$loader->add('SomeWhere\\Test\\', __DIR__);
或者只需将路径添加到TestLocalRepository中的composer.json