【发布时间】:2016-12-19 20:23:31
【问题描述】:
在他们的项目中使用类特性的 PHP 开发人员在使用它们之前必须做很多事情来加载特定的类。 php __autoload()(将来会弃用)、spl_autoload_register()、psr-0 和 psr-4 标准来自动加载它们。
在 start.php 中定义的 __autoload() 或 spl_autoload_register() 函数(其中包含所有类的路径)必须首先包含在 index 或任何 php 页面中,然后使用加载的类对象。
在 psr-0 和 psr-4 中,我们通过将 autoload 的 psr-0 或 psr-4 或类映射路径设置为供应商文件夹来配置 composer.json。执行转储自动加载,在您的 php 文件中包含单个生成的 autoload.php 和“使用”“命名空间”的 psr-4 约定,据说可以让我们的生活更轻松(事实并非如此)。
在 java 中,在包下定义类,然后简单地导入所需的类并使用它。
我的问题是,为什么php加载类不像java包&导入那么简单?
我知道,即使不是几乎不可能,也可能存在一些实施困难。
几千个新的 c 代码行,如果不是十万,肯定不会减慢 php 解释器来帮助查找 import 关键字中提到的类名,并从包中加载该类,类似于 java,而不是这些繁琐的约定 (spl_autoload_register (),psr-0,psr-4) 这应该使加载类更容易。
我在大部分项目中都使用过 java。所以,我是 php 的新手,这种问题可能会让人很期待,这可能看起来很菜鸟。非常感谢您的回复。谢谢。
【问题讨论】:
-
因为你通常只会说
include_once 'otherFile.php';? -
@rabbit,伙计,你知道 include_once 认真做什么吗?我认为,我们已经很好地通过了 composer.json 的自动加载文件 _autload(),spl_autoload_register() 中的 include_once 阶段。
-
老兄,你在上面发帖说你想知道如何做某事,你给出了零代码,你甚至没有发布你该死的代码来显示你在做什么,然后有人建议使用 include_once 和你攻击了他们。然后你坐在那里想知道为什么人们不帮助你。
-
"为什么 PHP [加载类] 不像 Java?"嗯,我不知道,也许是因为[剥]橙子就像[剥]苹果一样?
标签: java php import spl-autoload-register psr-4