php命名空间即时

时间:2010-12-23 13:33:09

标签: php namespaces

昨天我问了一个关于命名空间得到解答的问题,所以我就一直这样做了。我进一步深入了解这个问题,我越是意识到,我真的希望能够动态生成命名空间。原因是,我有一个插件目录,其中包含所有文件。如果我公司的某个人正在制作插件......或者是第三方,我不希望他们不得不打扰命名空间。我想通过目录结构动态生成命名空间。你说,“为什么不这样做呢!”好吧,我做了,但我意识到我仍然有类名称相同的潜在问题,名称空间将解决这个问题。包也可以解决这个问题,但我找不到php支持它们。

-plugin
    -tabs
      +tabs.php
    -package
        -tabs
            +tabs.php

我们的想法是能够通过$ tabs-> func()和$ package_tabs-> func();

来访问这些类

同样,这不是问题,除了类被命名为同一事物的可能性。

我有一个解决方法,但如果有人知道动态创建命名空间的解决方法,那么听起来很有意思。

我看到的一个问题是PHP在“编译”时创建了命名空间。因此,使用诸如fsocks之类的东西来传递命名空间是一次失败的尝试。

1 个答案:

答案 0 :(得分:2)

动态无法做到。正如您所提到的,PHP在编译时扩展了框架,因此PHP本身没有任何内容可以修改它。

现在,您可以通过遍历目录结构并检查命名空间来构建一个程序来“安装”这些脚本。如果找不到,则自动编辑文件并在顶部添加命名空间定义。但请注意,这将是有问题的,因为任何使用的类都可能不是完全限定的(因此在编译时抛出错误)。

所以最好的方法就是从头开始使用命名空间开发类。这并不难,并且可以很容易地记录下来......