一旦掌握了命名空间的窍门,命名空间就非常容易了。
举个例子:
app/models/File.php
namespace App\Models;
class File {
public function someMethodThatGetsFiles()
{
}
}
app/controllers/FileController.php
namespace App\Controllers;
use App\Models\File;
class FileController {
public function someMethod()
{
$file = new File();
}
}
声明命名空间:
namespace App\Controllers;
请记住,一旦您将一个类放入命名空间以访问任何 PHP 的内置类,您需要从根命名空间调用它们。例如:$stdClass = new stdClass(); 将变为 $stdClass = new \stdClass();(参见 \)
“导入”其他命名空间:
use App\Models\File;
这允许您随后使用不带命名空间前缀的File 类。
您也可以直接调用:
$file = new App\Models\File();
但最好将其放在 use 语句的顶部,因为这样您就可以查看所有文件的依赖项,而无需扫描代码。
完成后,您需要让他们运行 composer dump-autoload 以更新 Composer 的自动加载功能,以考虑您新添加的类。
请记住,如果您想通过 URL 访问 FileController,那么您需要定义一个路由并指定完整的命名空间,如下所示:
Route::get('file', 'App\\Controllers\\FileController@someMethod');
这会将所有 GET /file 请求定向到控制器的someMethod()
查看Namespaces 上的 PHP 文档,Nettut 始终是 this 文章的好资源