php - php 在命名空间内使用所有带有“use”的类| 不是“包括”而是“使用”' | 香草PHP
问题描述
我有一个类,它使用 Controllers 文件夹中的每个类。为了能够使用它们,我需要做
use <namespace>\<class>;
但是,如果您有大量的类并且占用大量空间,那么这会变得重复。
我知道在 c# 中,您可以在特定文件夹中包含所有类,例如
using Controllers
因此,所有类都将与“控制器”一起加载,并且不需要为这个“控制器”命名空间内的 10 个不同的类重复 10 次。
但是如何用 PHP 做到这一点?
我尝试循环 glob
foreach (glob("Controllers/*.php") as $filename) {
use $filename;
}
但是使用 'use' 会引发错误,这是意料之中的,因为这是一种错误的使用方式。Al-tho 使用 'include' 切换 'use' 有效,但随后找不到这样的 $filename。我需要使用“使用”而不是“包含”
这是否可能,或者我只是在浪费时间尝试在不使用任何 3rd 方库或框架(vanilla php)的情况下执行此操作
解决方案
您可以在 PHP 中使用命名空间:
假设我有
App\Namespace1\Foo
App\Namespace1\Bar
App\Namespace2\Baz
namespace App\Namespace2;
use App\Namespace1;
class Baz
{
public function __construct(Namespace1\Foo $foo)
{
new Namespace1\Bar($foo);
}
}
推荐阅读
- java - 如何在 Java 中将 UTC 转换为 EST
- matlab - Matlab中的双倍和
- python - Discord.py 机器人,我可以“侧身”完成一项繁重的任务,这样我就不会滞后输入吗?
- cmd - 卸载 Conda 3.8 后 cmd 变得不可用
- python - 如何在 H2OAutoML 中设置 weights_column?
- wso2esb - 向 mqtt 发送消息时如何启用 SSL
- c++ - 我如何在c中取数字的五次方
- python - 检查 tkinter 中的菜单项是启用还是禁用
- graphql-js - 我在 mergeschemas 上使用 graphql 时出现此错误:GraphQLError: Unknown type "Ability"
- sql - 不支持sql查询