问题标签 [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.
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
在必要时在函数中和全局范围之外。
php - spl_autoload_register 工作方式说明
我正在使用这种方法来加载类:
关于这些功能,我仍然有一些东西我很难理解。
据我了解,每当我创建一个对象实例时,它都会触发该函数并加载该对象的类。
所以,如果我要做类似的事情:
该函数将捕获这种减速,并将require_once 'classes/myObj.php'
.
如果我创建另一个实例会发生什么?例如:
它会触发该功能两次吗?或者它注意到它是同一个类,所以它不会重复两次?无论如何,这就是我使用的原因,require_once
所以我不会超载。但是,我仍然想知道它实际上做了什么。
还有一件事,为什么当我在做这样的代码时:
该函数仍将其识别为类声明,然后需要该文件classes/someOtherClass.php
。为什么会这样?我还没有声明一个新对象,事实上,我没有对象是 someOtherClass 的一个实例。这是否意味着每当我使用对象函数时,它都会尝试包含该类?或者每当我使用静态函数时?
提前致谢!
php - 加载类时的 spl_autoload_register 问题
所以我之前已经在这里问过这个问题,但是提供的解决方案对我不起作用。这是我的设置:
这是我的 index.php
这是我的 MyClass.php
我的回声没有任何显示。显然我的课程也没有加载。相反,我得到了这个错误。
请帮忙。我已经坚持了很长一段时间了,我的其余发展都在受苦。我尝试移动spl_autoload_register()
只是因为这是推荐的方式。现在失去的时间让我后悔了。
php - 如何明确确定对象是否已实例化
我有一个 PHP 类,我正在为其实例化一个对象。如果我更改类的名称空间以更改类的路径,则自动加载器会抱怨该类未定义。但是当我正确地做所有事情时,没有抱怨,但构造函数中的回声没有被触发。所以我假设它找到了这个类,但是为什么没有触发构造函数代码呢?我怎样才能确定一个对象已被实例化?
如何检查 $obj 是否正确实例化?
对于原始问题,请参见此处。加载类时的 spl_autoload_register 问题
您可以在那里提供的任何答案也非常感谢。我试图将一个更大的问题分解成几个较小的问题来解决它。
php - PHP spl_autoload_register 导致类重复?
例如,这是我的网络结构,
我在文件夹下有这些类文件model
,
我想通过 Autoload 类自动加载它们,
实施,
结果,
但是classfour
, MyClass
&MyClass2
不在列表中。
而对于,
将导致重复取决于我实例化了多少类,
在我的实时服务器中,我得到了更奇怪的结果,
知道为什么以及如何解决它吗?
编辑:
如果我手动包含这些类,
我得到正确答案,
classfour
, MyClass
&MyClass2
现在在列表中。
怎么来的!??
php - 使用 SimpleTest 模拟命名空间类
我正在使用 SimpleTest 对我的 PHP 类进行单元测试。我添加了一个自定义基类,它spl_autoload_register
可以自动加载我需要的类。
但是现在嘲弄成了一个问题。我如何模拟通过命名空间加载的类?
这基本上是我在我的测试课上所拥有的。
任何人都知道我如何仍然可以模拟通过命名空间加载的类(自动加载)?
php - 使用 spl_autoload_register
我必须在我创建的每个 PHP 文件中添加以下行以使用自动加载器吗?或者有一个解决方案,例如在应用程序的“index.php”中执行一次,然后像往常一样实例化其他文件中的类?
谢谢。
php - spl_autoload_register 在错误的目录/文件中搜索
我在我的函数文件 (MyFunctions.php) 中放置了以下代码:
但是,当我从脚本中引用类/对象时,spl_autoload_register
会在定义它的函数文件中搜索,而不是在类库目录中搜索:
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.php
andUser.php
而不是在spl_autoload_register
. 这是目录树...
就是这样。重复。在 install.php 中,使用此路径加载 Autoload.php 有效
但在 Autoload.php 中,这样的东西不起作用
我知道这是另一个“路径”问题,没有多少人想看到它,但我已经尝试解决它 3 天了,如果我不这样做,我将无法继续我的申请。
预先感谢您的所有答案
编辑:我以为我不必发布Autoload
课程,但在这里......
这行代码
是因为类的全名是Libs_Bootstrap
如此拆分字符串为
ABSOLUTE_PATH/libs/Bootstrap.php
。请注意,绝对路径常量是constants.php
在根中的 which 中生成的。
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::
?
类->自动加载->索引