如何解决使用命名空间时导入文件失败的问题

时间:2019-04-09 05:20:01

标签: php

我正在学习php名称空间和自动加载功能,希望使用该名称空间时自动加载会生效,如何使它起作用?

我的php环境是php 7.3.1,我使用的开发工具是phpstorm

我尝试不使用名称空间来自动加载类,这很好,但是如果使用名称空间,则会出现导入错误。

这三个文件都在同一目录中。

目录结构:

project
|    automatically-load-objects.php
│    autoLoadA.php   
│    autoLoadB.php

automatically-load-objects.php:

<?php

spl_autoload_register(function ($class) {
    require_once $class . '.php';
});

$obj1 = new \autoLoadTest\autoLoadA();
$obj2 = new \autoLoadTest\autoLoadB();
$obj1->classA();
$obj2->classB();

autoLoadA.php:

<?php

namespace autoLoadTest;

class autoLoadA
{
    public static function classA()
    {
        echo 'Hello, this is classA!' . PHP_EOL;
    }
}

autoLoadB.php:

<?php

namespace autoLoadTest;

class autoLoadB
{
    public static function classB()
    {
        echo 'Hello, this is classB!' . PHP_EOL;
    }
}

我希望自动加载生效,但实际上phpstorm给出了一些错误:

  

警告:require_once(autoLoadTest \ autoLoadA.php):打开失败   流:中没有这样的文件或目录   C:\ Users \ Riven \ Documents \ Study \ php \ php-pracitice \ php-programming \ classes入门   第4行上的对象和对象\第一部分\ automatically-load-objects.php

     

严重错误:require_once():需要打开失败   'autoLoadTest \ autoLoadA.php'(include_path ='.; C:\ php \ pear')在   C:\ Users \ Riven \ Documents \ Study \ php \ php-pracitice \ php-programming \ classes入门   第4行上的对象和对象\第一部分\ automatically-load-objects.php

0 个答案:

没有答案