问题标签 [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 投票
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 回答
246 浏览

php - spl_autoload_register 工作方式说明

我正在使用这种方法来加载类:

关于这些功能,我仍然有一些东西我很难理解。

据我了解,每当我创建一个对象实例时,它都会触发该函数并加载该对象的类。

所以,如果我要做类似的事情:

该函数将捕获这种减速,并将require_once 'classes/myObj.php'.

如果我创建另一个实例会发生什么?例如:

它会触发该功能两次吗?或者它注意到它是同一个类,所以它不会重复两次?无论如何,这就是我使用的原因,require_once所以我不会超载。但是,我仍然想知道它实际上做了什么。

还有一件事,为什么当我在做这样的代码时:

该函数仍将其识别为类声明,然后需要该文件classes/someOtherClass.php。为什么会这样?我还没有声明一个新对象,事实上,我没有对象是 someOtherClass 的一个实例。这是否意味着每当我使用对象函数时,它都会尝试包含该类?或者每当我使用静态函数时?

提前致谢!

0 投票
2 回答
3066 浏览

php - 加载类时的 spl_autoload_register 问题

所以我之前已经在这里问过这个问题,但是提供的解决方案对我不起作用。这是我的设置:

这是我的 index.php

这是我的 MyClass.php

我的回声没有任何显示。显然我的课程也没有加载。相反,我得到了这个错误。

请帮忙。我已经坚持了很长一段时间了,我的其余发展都在受苦。我尝试移动spl_autoload_register()只是因为这是推荐的方式。现在失去的时间让我后悔了。

0 投票
0 回答
172 浏览

php - 如何明确确定对象是否已实例化

我有一个 PHP 类,我正在为其实例化一个对象。如果我更改类的名称空间以更改类的路径,则自动加载器会抱怨该类未定义。但是当我正确地做所有事情时,没有抱怨,但构造函数中的回声没有被触发。所以我假设它找到了这个类,但是为什么没有触发构造函数代码呢?我怎样才能确定一个对象已被实例化?

如何检查 $obj 是否正确实例化?

对于原始问题,请参见此处。加载类时的 spl_autoload_register 问题

您可以在那里提供的任何答案也非常感谢。我试图将一个更大的问题分解成几个较小的问题来解决它。

0 投票
1 回答
506 浏览

php - PHP spl_autoload_register 导致类重复?

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

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

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

实施,

结果,

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

而对于,

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

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

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

编辑:

如果我手动包含这些类,

我得到正确答案,

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

怎么来的!??

0 投票
1 回答
227 浏览

php - 使用 SimpleTest 模拟命名空间类

我正在使用 SimpleTest 对我的 PHP 类进行单元测试。我添加了一个自定义基类,它spl_autoload_register可以自动加载我需要的类。

但是现在嘲弄成了一个问题。我如何模拟通过命名空间加载的类?

这基本上是我在我的测试课上所拥有的。

任何人都知道我如何仍然可以模拟通过命名空间加载的类(自动加载)?

0 投票
1 回答
527 浏览

php - 使用 spl_autoload_register

我必须在我创建的每个 PHP 文件中添加以下行以使用自动加载器吗?或者有一个解决方案,例如在应用程序的“index.php”中执行一次,然后像往常一样实例化其他文件中的类?

谢谢。

0 投票
1 回答
365 浏览

php - spl_autoload_register 在错误的目录/文件中搜索

我在我的函数文件 (MyFunctions.php) 中放置了以下代码:

但是,当我从脚本中引用类/对象时,spl_autoload_register会在定义它的函数文件中搜索,而不是在类库目录中搜索:

0 投票
1 回答
975 浏览

php - 000webhost 中使用 spl_autoload_register 的绝对路径

我的问题是绝对路径和一般路径。我写道这是 000webhost 因为它可能是特定于主机的问题,所以在这里。

与任何主机一样,该主机public_html在根目录中有一个文件夹。我已将图像、CSS、JS 文件放在该文件夹中。此外,还有一个index.php和一个install.php。该应用程序的其余部分位于public_html (../public_html)名为app. 我constant.php在根中创建了一个值,我在其中创建了ABSOLUTE_PATH一个值为 的常量dirname(__FILE__) . '/app/'spl_autoload_register()使用该常量来加载类,但它不起作用。

现在,您可能认为我做错了什么,但是在spl_autoload调用之前,我必须加载目录Autoload.php中的类app/libs/。另外,我加载User.php它也在app/libs目录中,它们都工作正常。

所以,我的问题是,为什么ABSOLUTE_PATH使用Autoload.phpandUser.php而不是在spl_autoload_register. 这是目录树...

就是这样。重复。在 install.php 中,使用此路径加载 Autoload.php 有效

但在 Autoload.php 中,这样的东西不起作用

我知道这是另一个“路径”问题,没有多少人想看到它,但我已经尝试解决它 3 天了,如果我不这样做,我将无法继续我的申请。

预先感谢您的所有答案

编辑:我以为我不必发布Autoload课程,但在这里......

这行代码

是因为类的全名是Libs_Bootstrap如此拆分字符串为 ABSOLUTE_PATH/libs/Bootstrap.php。请注意,绝对路径常量是constants.php在根中的 which 中生成的。

0 投票
0 回答
468 浏览

php - spl_autoload_register $this->function

所以我用'spl_autoload_register'index来加载一堆.classes因为我lazy,正如你在下面我的自动加载构造中看到的那样,我也functions从一些调用auto-loaded classes来运行我的应用程序。

在我的项目范围内,我无法$this->function在另一个function中引用例如auto-loaded class,也许我不理解事物是如何像这样实例化的。

我想要一个允许程序和 OOP 结构的项目的最有效方法,但我真的很喜欢使用$this大声笑,我如何能够$this在我的自动加载器加载的类中有效地使用和使用它,我会编辑吗? init() 也许允许$this

请原谅我制作项目的无知,并且不了解编码结构的最新情况。

self::也应该乖乖的static::

类->自动加载->索引