【发布时间】:2021-02-23 18:54:47
【问题描述】:
我正在创建一个系统,我们将在其中使用作曲家自动加载。在作曲家更新终端中运行时,它会生成供应商目录。初始结构如下所示:
autoload.json,如下所示:
{
"name": "projeto/braspag-sdk",
"description": "SDK de integração com a loja virtual",
"type" : "library",
"authors": [
{
"name": "Nome da empresa - Setor de TI",
"email": "ti@empresa.com.br"
}
],
"autoload": {
"psr-4": {
"Projeto\\": "src/"
}
},
"require": {
"php": ">=7.1"
}
}
为了测试一切是否正常,我创建了一个名为 authentication / Autenticacao.php 的目录。看:
<?php
namespace Projeto\Autenticacao;
class Autenticacao{
public function __construct(){
echo "vamos testar";
}
}
当我在本地测试时,它可以工作,但远程会出错。
致命错误:未捕获的错误:类 'Projeto\Autenticacao' 未在 C:\xampp\htdocs\projetos\braspag\index.php:5 堆栈跟踪:#0 {main} 在第 5 行的 C:\xampp\htdocs\projetos\braspag\index.php 中抛出
看看下面 index.php 是怎样的:
<?php
ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
use Projeto\Autenticacao\Autenticacao;
use Projeto\Autorizacao\Autorizacao;
require __DIR__ . "/vendor/autoload.php";
$autorizacao = new Autorizacao;
$autenticar = new Autenticacao;
远程目录如下所示:www.site.com/braspag。 Composer.json 是在远程服务器的“/”目录中生成的。是否必须将在该目录中生成的文件(composer.json、composer.lock 和 vendor 目录)复制并放在文件所在的目录(/httpdocs/braspag)中?我这样做了,但也没有用。
【问题讨论】:
-
你能分享一下 Marketplace\Authentication 类命名空间吗?
-
您需要将
require移动到您的use Projecto...语句之前。 autoload.php 必须在您尝试引用它定义的任何类或命名空间之前执行。
标签: php namespaces