2016-08-12 73 views
-2

在他们的项目中使用类功能的PHP开发人员在使用它们之前,必须做大量的马戏团才能加载特定的类。 php __autoload()(将来会被弃用),spl_autoload_register(),psr-0 & psr-4标准自动加载它们。为什么php的类加载不像java“import”那么简单?

例如在start.php中定义的__autoload()或者那个问题spl_autoload_register()函数(包含其中所有类的路径)必须首先包含在索引或任何php页面中,然后执行您的工作与加载的类对象。

psr-0 & psr-4我们通过将autoload的psr-0或psr-4或classmap路径设置为供应商文件夹来配置composer.json。做dump-autload,在你的php文件中包含那个单独生成的autoload.php,并且使用“”命名空间“的psr-4约定来表示让我们的生活更容易(不是)。

在java中,定义包下的类然后只需导入需要的类并使用它。

我的问题是,为什么php加载的类不像java包& import那么简单?

我知道如果不是几乎不可能的话,可能会有一些实施困难。

几千个新的c代码行,如果不是lakhs绝对不会减缓PHP解释器,以帮助找到在import关键字中提到的类名称,并从类似java的包中加载该类,而不是这些繁琐的约定( spl_autoload_register(),psr-0,psr-4),它们可以使加载类更容易。

我在我的大部分项目中都使用过java。所以,我是PHP的新手,这种问题可能会很好,可能会出现很多问题。回复非常感谢。谢谢。

+0

因为你通常只会说'include_once'otherFile.php';'? –

+1

@rabbit,哥们儿,你知道include_once是真的吗?我想,我们已经在_autload(),spl_autoload_register(),composer.json的自动加载文件中通过了include_once阶段。 –

+2

Dude,你在上面发布了你想要知道如何去做的事情,你给了零代码,你甚至没有发布你的该死的代码来显示你在做什么,然后有人建议使用include_once并且攻击它们。然后你坐在那里想知道为什么PPL没有帮助你。 –

回答

1

嗯,是的。

PSRs(当前)只是框架实现的建议。也就是说,除非你正在编写框架或包,它并不是真的针对你。恰巧,许多PHP开发人员都喜欢遵循这些标准(特别是PSR 1,2和12)。

碰巧,PSR-4的例子都使用spl_autoload_register(),这是一个更方便的方法来包括包和类,而不需要include_once。 PSR-4只是由一个与php语言分开的机构推荐的,并且是相对较新的,这就是为什么你可以以任何你想要的方式实现spl_autoload_register()

然而,include_once仍然是加载类的有效方法,如果你问我往往是最好的方法,和(并非Java开发人员),我认为是一样Java中的等价物一样简单。

+0

哈哈。谢谢。我的问题真的很不错。我认为@rabbit已经回答了它。但我没有得到他所说的。现在你说得很清楚了。对不起兔子。 –

相关问题