问题标签 [spl-autoloader]

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 投票
1 回答
456 浏览

php - SplClassLoader 目录结构

我是命名空间的新手,我猜想在 SplClassLoader 的方法中自动加载。我试过搜索很多教程,但运气不佳。也许你们可以帮我搞定这件事?

目录结构

测试.php

索引.php

当我在 WAMP 上运行它时,这一切都在 localhost/website/ 内。

任何建议,或者如果有人可以向我指出一些阅读资源来让我明白这一点,那就太好了。

谢谢

0 投票
8 回答
81674 浏览

php - 在 PHP 中自动加载类的最佳方法

我正在做一个项目,我有以下文件结构:

我想自动加载类,class_name 和 example_class(与 PHP 类命名相同),以便在 index.php 中类已经被实例化,所以我可以这样做:

我在网上看了看,但找不到正确的答案 - 谁能帮帮我?

编辑

感谢您的回复。让我扩展我的场景。我正在尝试编写一个 WordPress 插件,该插件可以放入项目中,并通过将类放入文件夹“功能”中添加附加功能,例如,在插件内部。永远不会有 1000 个课程,一推就可能 10 个?

我可以编写一个方法来遍历“lib”文件夹的文件夹结构,包括每个类,然后将其分配给一个变量(类名),但不认为这是一种非常有效的方法,但它也许这似乎是实现我需要的最佳方式?

0 投票
1 回答
424 浏览

php - php autoloader:为什么会这样?

我一直在尝试使用自动加载器类目录映射技术,这有点困难。我设法提出了一个相当简单的解决方案(表面上),但我完全不明白它是否有效,而其他“更明显”的解决方案却失败了。下面是一些代码片段,说明了我的困惑。

这是工作代码:

这是我认为应该有效但无效的片段:

后者对我来说更有意义,因为虽然这两个版本都有效:

这个抛出“没有这样的文件或目录......”(注意路径中缺少“sites/”。

“没有这样的文件或目录......”错误让我觉得我可以简单地检查一个类的支持文件,如果 (file_exists()) {require_once(); 休息;}否则{继续;}

为什么那行不通?而且,为什么第一个片段有效?支持路径/文件从未明确包含或要求。

0 投票
0 回答
149 浏览

php - PHP 的 spl_autoload_register 是否只加载必要的类?

我发现许多 stackoverflow 页面声称 spl_autoload_register 只加载必要的类(例如__autoload vs include family),但是有文档或证明吗?我检查了 php.net 并在他们的文档中找不到任何内容。我也做了谷歌搜索,找不到官方答案。

0 投票
1 回答
759 浏览

php - 如何在不自动加载的情况下使用 Michel Fortin 的 PHP Markdown?

我想使用Michel Fortin 的 PHP Markdown parser。新样式要求用户设置兼容 PSR-0 的自动装载机。但是,说明还指出:

如果你不想使用自动加载,你可以做一个经典的 require_once 来手动包含之前使用的文件。

不幸的是,没有关于简单使用 require_once 的说明。我不想使用自动加载器,如何使用这个 Markdown 解析器来解析我的 Markdown 字符串?


编辑:另外,是否可以require_once在函数内部(以及全局范围之外)使用解析器?问题use是它必须在全局范围内使用,这似乎require_once在全局范围内是必需的。我的偏好是仅require_once在必要时在函数中和全局范围之外。

0 投票
1 回答
506 浏览

php - PHP spl_autoload_register 导致类重复?

例如,这是我的网络结构,

我在文件夹下有这些类文件model

我想通过 Autoload 类自动加载它们,

实施,

结果,

但是classfour, MyClass&MyClass2不在列表中。

而对于,

将导致重复取决于我实例化了多少类,

在我的实时服务器中,我得到了更奇怪的结果,

知道为什么以及如何解决它吗?

编辑:

如果我手动包含这些类,

我得到正确答案,

classfour, MyClass&MyClass2现在在列表中。

怎么来的!??

0 投票
1 回答
289 浏览

php - spl_autoload_register 的不同行为 b/n online 和 localhost

在此处输入图像描述

我有以下目录结构,我将所有类都放在里面classes/,如下所示,我有一个header.php既调用所有文件,又具有所有文件共享的其他重要设置。

现在,如果我使用spl_autoload_register()这种方式:

内部inc/header.php文件并header.php从我的index文件中调用它,然后它在我的本地主机上工作正常,但是当我将所有脚本按原样上传到实时主机时,我会收到类似的错误。

Line 9是个spl_autoload_register()

我不明白,这怎么会发生,希望任何人都知道。

谢谢

0 投票
2 回答
204 浏览

php - PHP spl_autoload:如何确定自动加载函数请求者

spl_autoload_register 注册的函数有没有办法知道调用它的源文件/类/方法?我希望能够在找不到类时输出有用的错误,以便我知道需要更新哪个源文件。例如:

0 投票
1 回答
56 浏览

php - PHP:__autoload 堆栈可以持久化吗?

我认为这不能做到这一点,因为 PHP 是一种无状态语言。但无论如何我都会问...

我创建了一个本土 MVC 框架。这些类都是命名空间的。在初始加载时,我实例化了我的自定义 Autoload 类。此类的一个方法扫描已注册的类目录(存储在应用程序配置中),并为路径创建一个完全限定的类名数组。该数组存储为此类的受保护成员。该成员数组由 spl_autoload() 实现使用。Autoloader 对象被缓存并在每个 http 请求上重用。

这很好。然而,令我恼火的是,每当一个 http 请求进入域时,我的引导例程都必须将自动加载方法注册到 __autoload 堆栈。我很想注册一次,不要管它。

0 投票
1 回答
51 浏览

php - spl_autoload_reqister 类未加载

我有一个看起来像的文件夹结构

我的Includes.php

我的someClass.php

并且test.php

当我运行时,test.php我在 .../Scheduled/test.php 上找不到 someClass

spl 是否适用于 someClass.php 之类的扩展类,还是我需要包含要扩展的类?

为什么它不会找到someClass.php

谢谢