【问题标题】:PHP Namespace issuesPHP 命名空间问题
【发布时间】: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


【解决方案1】:

尝试使用类的完整路径如下:

use httpdocs\braspag\src\Marketplace\Authentication;

在你的 Authentication 类中

namespace httpdocs\braspag\src\Marketplace;

【讨论】:

  • 抱歉耽搁了。我进行了调整,但错误仍在继续。我重新表述了我的问题,因为我注意到它可以在本地工作,但不能在远程工作。
【解决方案2】:

检查文件名先是大写,命名空间名字是大写,然后使用完整路径如下

使用 httpdocs\braspag\src\Marketplace\Authentication;

等等……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2013-03-26
    相关资源
    最近更新 更多