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

php - PHP:找不到自动加载类

我在 PHP 中自动加载类时遇到问题。

在我index.php写的(这是最简单的)中:

我的Cont.php文件位于PROJECT_ROOT/assets/core/Contr.php

结果我的index.php文件抛出了一个致命错误:

0 投票
0 回答
92 浏览

php - PHP E_STRICT causes blank white screen

I am running PHP 5.5.11. In my php.ini I have

My code uses spl_autoload_register() to register an autoloader. When I load a page I get a blank white page. I get an error in the log that Foo can not be found. Foo is defined in my autoloader. Here is the basic structure:

index.inc calls a method on A. That method calls a method on B. B extends C. C uses a class constant of Foo ( Foo::LEVEL ). It seems that it is the parsing of the class constant that is causing the error. I can fix this if I go ahead and load Foo at the top of index.inc by calling:

I can also get rid of the issue by changing my php.ini to:

The fatal I am getting is not a strict mode error. I don't understand the impact that E_STRICT is having on the processing of my code.

0 投票
1 回答
1373 浏览

php - 无法重新声明类:如果文件夹中已经存在类,如何自动加载?

如何检查一个文件夹中是否已经存在一个类,然后不要从另一个文件夹再次加载这个类?

例如,我有这个文件夹结构,

我有这两个相同的类code/local/

来自本地/

从核心,

所以我需要一个脚本来检测 Article 的类local/-如果它已经在该文件夹中退出,则不要从core/文件夹再次加载该类。是否可以?

这是我index.php用于加载类的自动加载功能,

当然我得到这个错误,

class_exists似乎是我应该研究的答案,但是如何将它与上面的函数一起使用,尤其是spl_autoload_register. 或者如果你有更好的想法?

0 投票
1 回答
326 浏览

php - PHP 自动加载器类

我正在实现一个自动加载器类,但它不工作。下面是自动加载器类(灵感来自php.net 上的这个页面):

调用自动加载器的代码在这里:

和错误信息:

正在命中自动加载功能,文件 MyClass.class.php 存在于包含路径中,我可以通过将代码更改为以下内容来验证:

print_r($var);返回对象并且没有错误。

有什么建议或指示吗?

0 投票
2 回答
613 浏览

php - 带有命名空间 php 的 spl_autoload

我正在为由 nodejs 外部进程运行的计划作业制作一个小框架。我想使用自动装载机,但由于某种原因数据无法到达。我也在使用命名空间。这是我的文件夹结构的样子:

Config.php只是有一些定义和我的Loader.php.

Loader.php 看起来像:

因此,对于我来说,我将其SomeJob.php包括在内Config.php,然后在 JobConfig.php 失败时尝试实例化它。我的命名空间看起来像Library\Core\JobConfig等等。我不确定这是否是没有能力引导事物的最佳方法。但是在加载失败之前我没有看到来自加载器的回声。

编辑:

我尝试了@Layne 的建议,但没有奏效。我仍然找不到一个类,并且似乎没有进入 spl 堆栈的类。是代码的链接

0 投票
1 回答
78 浏览

php - 尝试使用 smarty 和 apache log4php 连接到 Zend 时出现不清楚的错误

我正在使用带有 log4php 和 smarty 的 zend 框架,在尝试运行 Zend 的引导程序时遇到了以下问题。

这是我得到的错误:

我认为我的问题与此处提到的以下问题非常相似,但是这个错误已经解决并修复了,我看到修复与詹姆斯在那里写的类似。无论如何,如您所见,这不起作用,所以我想知道我还应该尝试什么。

这是我的 config.php 代码:

/** *

0 投票
0 回答
102 浏览

php - 类可用性和 spl_autoload_register

我试图通过尝试更多的 OOP 方法来提高我的知识(尽管我还没有准备好使用完整的 OOP。目前我主要使用对象来保持整洁,便于编辑,所以我重复较少)。我已经阅读了 spl_autoload_register 并且有点理解它,但是我很难将它应用到我的应用程序中。(我正在构建的网站最终会非常大,所以我试图避免所有包含并不得不重复代码)

这是我的基本结构(这是基础并且会不断增长):

  • 入口页面(首先加载)(products.php) - 该页面主要由 HTML(设计和布局)组成,但引用了我的变量和对象。
  • 数据库类连接(functions/dbconn.php)
  • Products 类文件 (class/products.class.php) - 包含 products.php 所需的函数
  • 关税类文件 (class/tariffs.class.php) - 包含 products.php 和 class/products.class.php 中所需的函数

我想要什么(请随时纠正我的误解或以错误的方式计划!):

  1. 数据库文件可用于所有类文件,而无需将其注入函数
  2. 自动加载所需的类文件(可能包括来自“functions/dbconn.php”的数据库连接)
  3. 类函数可用于其他类文件

我希望我可以在 products.php 上使用单个包含文件,该文件将自动加载任何需要的类文件、数据库连接,并使它们对我启动的任何类都可用。或者,如果我希望彼此可用的类+数据库连接,我是否还需要向每个类文件添加代码。理想情况下,我只想要每个类的 1 个实例(对于这个例子)。

我无法理解的问题是:
如果我想在一个类文件中调用函数(存储在其他类文件中),我必须在我想在其中使用它的类中包含该文件并启动和实例. 然后这个实例对 products.php 不可用(所以我必须在 products.php 中包含并启动一个新实例,这当然是空的......)我还必须在每个类文件中加载数据库(所以我假设我正在建立多个连接,并且必须关闭多个连接。我确定我错了!)

我通常会做什么,但我试图从以下方面前进:
我通常需要数据库连接,所有(使用的)类文件并在“第一个加载的文件”(products.php)中启动实例,然后将数据库连接注入所有类/对象/函数(它是必需的)。但是,不同的类函数彼此不可用,所以我发现自己重复代码或将函数添加到严格意义上不存在的类或在类文件中包含并启动新实例......

如果这令人困惑,我很抱歉,我通过多年阅读其他代码自学成才,以及我从网上学到的东西......所以我的做法可能不是最好的(还......)

如果我没有意义,请让我知道在哪里,我会尽力解释得更好!

任何建议我都会非常感激!

0 投票
1 回答
326 浏览

php - 远程服务器上的 spl_autoload 故障

对不起我的语言不好:)

在我的本地 apache 2.2 php 5.3.13 上一切正常,但在远程服务器上(也是 php 5.3) spl_autoload 抛出逻辑异常:

致命错误:在 /home/u737840143/public_html/index.php:6 中未捕获异常 'LogicException' 并带有消息 'Class System\Core\Helper\Helper 无法加载' 堆栈跟踪:#0 /home/u737840143/public_html/index .php(6): spl_autoload('System\Core\Hel...') #1 {main} 在第 6 行的 /home/u737840143/public_html/index.php 中抛出

代码:

远程文件夹结构对应本地。

0 投票
2 回答
716 浏览

php - spl 自动加载:找不到类 – 命名空间问题?

我只是被 PHP 自动加载弄湿了。我实际上认为我已经掌握了基础知识,但不知何故它仍然无法正常工作。

我得到以下目录结构:

bootstrap.php是使用 lib 时将包含的文件。在这个文件中,我只有以下代码:

并在project.php

使用自动加载器的方式,据我了解,核心 PHP 自动加载器应该将命名空间转换为目录,然后查找包含该类的 php。

不是显示“It works!”,而是抛出一个致命错误。不幸的是,我不能确切地知道那个错误是什么,因为 CMS 只通知我有一个致命错误。
但是对于这样一个简单的结构,我相信这个错误是非常基本的,并且对于知道它是如何工作的人来说很容易找到。

这个例子我哪里出了问题——我是否正确地描述了自动加载器在这个设置中应该如何工作,还是有误解?

编辑:终于运行了错误日志:

Fatal error: Class undefined: sven\\project\\project\\project\\project in /xxx/bootstrap.php on line 36

这显然看起来不对,但如何改变呢?为什么有两个反斜杠?

0 投票
1 回答
1959 浏览

php - Slim 框架 - 如何自动加载 Slim/Slim.php 而不是使用 require?

如何自动加载 Slim/Slim.php 而不是使用require

我得到这个错误,

致命错误:在 C:... 中找不到类 'Slim\Slim'

SplAutoload 类,

或我应该选择的任何其他 SPL 自动加载器?Zend 自动加载器?