PHP根据文件夹结构动态生成命名空间

标签 php oop dynamic namespaces

我有一个像这样的文件夹结构:

index.php
app/
    controllers/
                folder1/
                        class.php

class.php 中没有命名空间定义。是否可以将 class.php 放在从相对于索引的文件夹结构生成的命名空间中?所以它会像这样加载:
new \app\controllers\folder1\classInFile();

或者有没有办法动态创建命名空间?

最佳答案

A file containing a namespace must declare the namespace at the top of the file before any other code.

http://php.net/manual/en/language.namespaces.definition.php


即,您不能在 namespace 声明之前执行任何代码,之后为时已晚。尽管有内省(introspection)的运行时黑客:不,这是不可能的。即使是这样,它也将取决于运行时信息,例如执行/包含代码的文件夹。命名空间可以是 var\www\myproject\foo\bar\baz或只是 foo\bar\baz .你将如何确定这一点?越来越乱了
真的,只要让它明确,即使这意味着输入更多。命名空间是类名称的一部分。您不应在运行时动态生成名称。

关于PHP根据文件夹结构动态生成命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13510073/

相关文章:

php - 检查存储在字符串中的类名是否正在实现接口(interface)

php - 如何在提交php时传递动态表单的字段名称和值

php - 插入后如何更新数据?

java - 通过 child build 者

php - Laravel Eloquent 顺序按数字数百先而不是最后

c++ - 可能的内存泄漏?

c++ - 数组和指针 - 运行时错误

php - Jquery 根据 <select> 填充 <table>

php - 值未传递到查询中

php - CakePHP 查询返回两行而不是一行