为什么不是';t php';s类加载不像java那样简单;进口;?

为什么不是';t php';s类加载不像java那样简单;进口;?,java,php,import,spl-autoload-register,psr-4,Java,Php,Import,Spl Autoload Register,Psr 4,在项目中使用类特性的PHP开发人员在使用它们之前,必须做大量的工作来加载特定的类。php自动加载()(将来可能会被弃用)、spl自动加载寄存器()、psr-0和psr-4标准来自动加载它们 例如,在start.php中定义的_autoload()或spl_autoload_register()函数(其中包含所有类的路径)必须首先包含在索引或php页面中,然后处理加载的类对象 在psr-0和psr-4中,我们通过设置autoload的psr-0或psr-4或供应商文件夹的类映射路径来配置compo

在项目中使用类特性的PHP开发人员在使用它们之前,必须做大量的工作来加载特定的类。php自动加载()(将来可能会被弃用)、spl自动加载寄存器()、psr-0和psr-4标准来自动加载它们

例如,在start.php中定义的_autoload()或spl_autoload_register()函数(其中包含所有类的路径)必须首先包含在索引或php页面中,然后处理加载的类对象

在psr-0和psr-4中,我们通过设置autoload的psr-0或psr-4或供应商文件夹的类映射路径来配置composer.json。不要卸载autload,在php文件中包含单个生成的autoload.php和psr-4约定的“使用”“名称空间”可以让我们的生活更轻松(事实并非如此)

在java中,在包下定义类,然后简单地导入所需的类并使用它

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

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

数千条新的c代码行(如果不是lakhs的话)肯定不会减慢php解释器的速度,以帮助找到import关键字中提到的类名,并从包中加载类似于java的类,而不是这些单调乏味的约定(spl_autoload_register()、psr-0、psr-4),这些约定假定会使加载类变得更容易

我在大多数项目中都使用过java。所以,我对php还不熟悉,这类问题可能是意料之中的,可能看起来很难回答。非常感谢您的回复。谢谢。

嗯,是的

PSR(目前)是框架实现的唯一建议。也就是说,除非您正在编写框架或包,否则它并不是真正针对您的。碰巧很多php开发人员都喜欢遵循这些标准(特别是PSR1、2和12)

碰巧,PSR-4示例都使用了
spl\u autoload\u register()
,这是一种更方便的包含包和类的方法,而不需要
include\u once
。PSR-4只是一个独立于php语言的机构推荐的,而且是相对较新的,这就是为什么您可以以任何方式实现
spl\u autoload\u register()


但是,
include_once
仍然是加载类的有效方法,如果你问我,它通常是最好的方法,而且(不是Java开发人员)我认为它与Java中的等效方法一样简单。

因为你通常只会说
include_once“otherFile.php”?@rabbit,伙计,你知道你曾经认真做过什么吗?我认为,我们已经很好地通过了include_once stage in_autload()、spl_autoload_register()、composer.json的自动加载文件。伙计,你在上面发布了你想知道如何做某事的帖子,你没有给出任何代码,你甚至没有发布你该死的代码来显示你在做什么,然后有人建议使用include_一次,然后你攻击了他们。然后你坐在那里想为什么ppl帮不了你。“为什么PHP[加载类]不像Java?”呃,我不知道,也许是因为[剥]橘子就像[剥]苹果?哈哈。非常感谢。我的问题真的很难回答。我想@rabbit已经回答了。但我不明白他说了什么。现在你说得很清楚了。对不起,兔子。