gpt4 book ai didi

php - PHP 中的简单命名空间

转载 作者:行者123 更新时间:2023-12-04 16:59:56 24 4
gpt4 key购买 nike

我想包括类(class) Proxy
./proxy/Proxy.php 在 ./index.php

require_once 'proxy/Proxy.php';
$proxy = new Proxy();

但接下来我想使用命名空间,所以我做了:

./proxy/Proxy.php
namespace proxy;
class Proxy
{
[...]



./index.php
$proxy = new \proxy\Proxy();

或者
$proxy = new proxy\Proxy();

或者
use proxy\Proxy;
$proxy = new Proxy();

我总是得到: Fatal error: Uncaught Error: Class 'proxy\Proxy' not found in /var/www/proxy/index.php
怎么了?

最佳答案

首先,如果您要使用命名空间,请使它们符合 PSR-4 自动加载器!检查此链接:

http://www.php-fig.org/psr/psr-4/

换句话说,我要求您将命名空间更改为 Proxy有资本。

其次,要使自动加载工作,您需要注册一个自动加载器。你可以通过查看这个来自己做 http://php.net/manual/en/function.spl-autoload-register.php ,或者,更好的方法是安装 Composer ( https://getcomposer.org/ )。

然后使用 Composer,如果您当前没有使用它,请运行 composer init从您的站点根目录,这将生成一个 composer.json .

在 Json 中,添加以下条目:

"autoload": {
"psr-4": {
"Proxy": "src/"
},
},

假设所有以 namespace Proxy 开头的类都在 src 中。目录。

由于您对自动加载配置进行了更改,请运行 composer dumpautoload它将生成新的类图。

最后,在您的脚本中, require_once 'vendor/autoload.php你永远不需要 require又上课了!
require_once 'vendor/autoload.php';

use Proxy\Proxy;

$proxy = new Proxy();

该约定基于文件路径和名称,因此 src/Proxy.phpnamepace Proxy , class Proxy . src/Something/Else.php将是 namespace Proxy\Somethingclass Else .

玩得开心! :-D

关于php - PHP 中的简单命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46787744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com