如何使用php中声明的命名空间之外的其他命名空间中的类?

问题描述 投票:0回答:1

我确信我在这里做了一些愚蠢的事情,但无法得到什么。我在

AssetHelpers.php
中定义了一个自定义类
App/Helpers/
。现在我想在
App/Providers/AppServiceProvider.php
中从 boot 方法使用它。但我得到未定义的常量“App\Providers\AssetHelpers”。所以我想这在某种程度上尊重了主命名空间,好吧,但是,我如何在这里使用我的类?

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Eloquent\Model;
use \App\Helpers\AssetHelpers;

class AppServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        //
    }

    public function boot(): void
    {
        dd(AssetHelpers); // Gives error Undefined constant "App\Providers\AssetHelpers"
    }
}
php class oop namespaces
1个回答
0
投票

不确定您是从哪个编程背景开始接触 PHP 的。或者最好在 youtube 上学习一些 BasicPHP 课程。

use 语句中的第一个反斜杠不是必需的。

use App\Helpers\AssetHelpers;

dd()
是自定义的
var_dump()
die()
来自 Symfony 甚至 Laravel?不确定这里的
boot()
方法是什么。 您可以创建 AssetHelpers 的新实例,例如。

    public function boot(): void
    {
        $assetHelpers = new AssetHelpers();
        $assetHelpers->nameOfYourMethodInAssetHelpersClass();
    }

或者您可以在构造函数中传递它,前提是您使用的框架提供了一些依赖注入。

    public function __construct(private AssetHelpers $assetHelpers) {}

    public function boot()
    {
        $this->assetHelpers->nameOfYourMethodInAssetHelpersClass();
    }
© www.soinside.com 2019 - 2024. All rights reserved.