gpt4 book ai didi

php - 命名空间和特征

转载 作者:可可西里 更新时间:2023-11-01 13:14:40 24 4
gpt4 key购买 nike

我在使用特征和命名空间时遇到错误,因为找不到特征。

索引.php:

require_once 'src/App.php';
use App\main;

$App = new App();

源/App.php

namespace App\main;
require_once __DIR__ . DIRECTORY_SEPARATOR . 'DataBase.php';
/**
* code
*/

src/DataBase.php

namespace App\DataBase;

require_once __DIR__ . DIRECTORY_SEPARATOR . 'Singleton.php';

class DataBase {
use Singleton; // or use App\Singleton

/**
* code
*/
}

src/Singleton.php

namespace App\Singleton.php;
trait Singleton {
/**
* code
*/
}

但是,当我从 Index.php 运行它时,出现了这个错误:

Fatal error: Trait 'App\DataBase\Singleton' not found in (...)

我该如何解决?

编辑

Php自动在命名空间中设置类名,例如:

酒吧.php

namespace App;
class Bar {
/**
* code
*/
}

那个,当你调用这个包时,你可以使用App\Bar,这意味着类是默认设置的。

最佳答案

您没有在 App\DataBase 中导入(或者用 PHP 的说法使用)App\Singleton\Singleton 符号命名空间,因此 PHP 假定 Singleton 位于同一命名空间中。

src/DataBase.php...

namespace App\DataBase;

use App\Singleton\Singleton;

require_once __DIR__ . '/Singleton.php';

class DataBase {
use Singleton;

// and so on

此外,我强烈建议您实现自动加载器策略(最好是 PSR-0)以避免所有 require_once 调用。

更新

澄清一下,当你这样做时......

namespace App\DataBase;

class DataBase { ... }

这个类的全称是\App\DataBase\DataBasenamespace 声明不包含类/特征名称。

关于php - 命名空间和特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20961556/

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