问题标签 [spl-autoload-register]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
31264 浏览

php - 高效的 PHP 自动加载和命名策略

像现在的大多数 Web 开发人员一样,我非常享受用于 Web 应用程序和网站的可靠 MVC 架构的好处。在使用 PHP 进行 MVC 时,自动加载显然非常方便。

我喜欢spl_autoload_register简单地定义一个__autoload()函数,因为如果您合并不同的基本模块,每个模块都使用自己的自动加载,这显然会更加灵活。但是,我从来没有对自己编写的加载函数感觉很好。它们涉及大量的字符串检查和目录扫描,以寻找可能要加载的类。

例如,假设我有一个应用程序,其基本路径定义为,以及一个包含名为和PATH_APP的目录的简单结构。我经常使用一种命名结构,即文件被命名并位于适当的目录中,默认情况下模型通常没有特定的方案。我可能有一个像这样的结构的加载器函数,它被注册到:modelsviewscontrollersIndexView.phpIndexController.phpspl_autoload_register

如果在那之后没有找到,我可能有另一个功能来扫描模型目录中的子目录。然而,所有的 if/else-ing、字符串检查和目录扫描对我来说似乎效率低下,我想改进它。

我很好奇其他开发人员可能会采用什么文件命名和自动加载策略。我正在寻找专门用于高效自动加载的好技术,而不是自动加载的替代品。

0 投票
1 回答
1100 浏览

php - What's the principle of autoloading in PHP?

spl_autoload_register can do this kind of job,but I don't understand how is that kind of job done?

0 投票
3 回答
39744 浏览

php - 命名空间中的 PHP 自动加载

我的命名空间中的自动加载有一点问题。如此处的 PHP 手册所示:http: //us.php.net/manual/en/language.namespaces.rules.php您应该能够使用完整的限定名称自动加载命名空间函数,例如 \glue\common\is_email( )。

事情是我有一个函数 spl_autoload_register(array($import, "load")); 在初始命名空间内,但每当我尝试从初始命名空间调用 \glue\common\is_email() 时,它不会传递该自动加载函数,但在使用 new is_email() 时(在类的上下文中)它会传递。我不明白手册说我可以从完全限定名称自动加载,但我不能:.

这是我的代码:

我也试过这段代码:

最后是这段代码:

0 投票
6 回答
27087 浏览

php - PHP spl_autoload_register

我正在尝试利用 PHP 中的自动加载。我在不同的目录中有各种类,所以我引导自动加载如下:

这一切似乎都很好,但我只是想仔细检查一下这确实被认为是可以接受的做法。

0 投票
2 回答
6329 浏览

php - 将 PHP spl_autoload_register() 与 Codeigniter 一起使用

请问如何将 spl_autoload_register() 与 Codeigniter 一起使用?我需要这样做,因为我将 Codeigniter 与另一个也使用自动加载的框架一起使用。

我在这里看到了一些东西

PHP spl_autoload_register

我不知道如何定位 CodeIgniter 自动加载。我是 OOP 和 Codeigniter 的新手。非常感谢!

上面的链接有这个:

0 投票
3 回答
1408 浏览

php - 惰性类包括 PHP

我使用自动加载器来包含类。我现在正在做的是使用“glob”来读取不同的目录并将它们推送到一个数组中。有没有更好的解决方案?

编辑:

我在自动加载类中使用它。问题是我必须使用 glob 搜索文件。有没有更快的方法来做到这一点?

0 投票
1 回答
1668 浏览

php - php 命名空间和自动加载

我有一些课

/library/QPF/Loader.php

/库/版本.php

/public/index.php

版本类加载,但 var_dump 显示没有函数 getVersion() 的空类;

0 投票
1 回答
1496 浏览

php - Yii 框架中通过目录和命名空间实例化控制器

Yii 框架支持模块以及控制器目录中的子目录,因此某些特定操作的路径可能是

  • /index.php?r=module/controller/action或者
  • /index.php?r=subdirectoryInControllerDir/controller/action.

我的目标是在控制器目录中有多个子目录。在这些文件夹中,我将使用命名空间创建与父级同名的控制器。

但是,如果我写

Yii 会加载MyController而不是mynamespace\MyController;

这里有什么建议吗?

0 投票
2 回答
1014 浏览

php - 自动加载与工厂和自动加载危险

这是一个由两部分组成的问题,尽管这两个部分密切相关。

我为我们的网站创建了一个页面装饰器 API,并将装饰器类的自动加载器放在我们站点范围的包含文件中。另一位开发人员认为这是一个非常糟糕的主意,因为随处使用自动加载器非常危险,并且可能导致奇怪的错误。例如,将一个对象序列化到会话中,如果您的一个自动加载的类具有相同的名称和 a __wakeup(),它将运行(尽管我尝试了这个并且无法重现它)。自动加载是否真的很危险,如果是,它有什么潜在的危险以及如何避免?我没有使用__autoload(),而是使用spl_autoload_register().

他反对使用自动加载的另一个论点是它比直接包含文件要慢,这可能很明显。我认为要保证装饰器在每个页面上工作,你必须包含每个装饰器类,所以他的建议是创建一个工厂类,它可以获取包含并为你创建你想要的类。我可以继续说下去,但我听到很多人吹捧自动加载的优点,并说它可以让任何应用程序更快。我非常喜欢它,但我仍然想做最好和最快的事情。有什么建议么?

0 投票
2 回答
466 浏览

php - 将 spl_autoload_register 与在实例化时需要参数的类一起使用

我正在尝试使用 spl_autoload_register() 自动要求我的文件。不幸的是,我的一个类在实例化时需要一个参数......例如:

有没有办法使用 spl_autoload_register() 将参数传递给类 __construct() 方法?