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

php - 自动加载打开时 PHP 不能包含文件

我有自己的 MVC 和加载类的自动加载器。除了我的基本 View.php 在 Core 文件夹中并且它的渲染函数执行以下操作之外,一切正常:

View.php 使用命名空间

当我转到我的索引页面时,它给出:

我尝试了以下方法:我添加了

而不是包括我做了:

这显示了页面上的标题,但它也给出了一个错误:

我知道它是因为 header.php 不是一个类。这是一个视图文件。所以我不知道,当自动加载器为基本控制器加载 View.php 时,如何包含该文件。

0 投票
2 回答
323 浏览

php - 从linux bash执行php时的自动加载器

我目前正在使用自动视频转换进行某种上传。目前,我正在上传完成后通过 php shell 命令执行 php 脚本,因此用户不必等到转换完成。像这样:

现在在我的转换脚本文件中,我正在使用另一个类“UploadFunctions”中的函数来更新数据库中的状态(如启动、转换、完成......)。问题在于,这个 UploadFunctions 类继承自另一个类“Controller”,例如建立数据库连接。目前我正在使用 spl_autoloader 在特定目录中搜​​索所需文件(例如 controller.php),但由于转换脚本与整个自动加载器内容脱节,它无法识别 Controller 类并引发致命的 php 错误。以下是转换脚本中的一些代码:

我这样做是完全错误的还是有更好的方法来做到这一点?如果您需要更多代码或信息,请告诉我!非常感谢

这是我的 spl_autoload 代码:

我将我的项目划分为代表功能的子文件夹,例如上传、我的帐户和图库.. 在每个子文件夹中还有 2 个其他文件夹:控制器和本地。控制器是控制这部分的类(例如上传),本地是我放置需要的本地类的文件夹。控制器类从位于子项目文件夹中的 index.php 中调用。“libs”和“global”只是项目范围的类,如数据库、用户等。这是我的文件夹结构的示例:

www/index.php // 主站点

www/upload/index.php // 调用控制器进行上传并初始化 spl_autoload

www/upload/controller/indexcontroller.php // 上传功能

www/upload/local/processVideo.php // 这是转换脚本。

我对 spl_autoload 函数相当陌生。在我看来,如果我的脚本正在调用 spl_autoload ,则不会调用:"php -f processVideo.php",不是吗?

0 投票
0 回答
158 浏览

php - spl_autoload 服务器相关问题

我们似乎对 1 个特定服务器上的 spl_autoload 有一个非常奇怪的问题。警告:spl_autoload() [function.spl-autoload]:无法访问 file.php

我也检查过,在我们的 WHM 面板中,它显示包含路径设置为 .:/usr/lib/php:/usr/local/lib/php

这个特定的服务器是运行 PHP 5.3.8 和 eAccelerator 的 Linux RedHat-9.3.6,上面的代码已经在其他 10 个服务器上进行了测试,并且运行良好,所以真的不知道为什么会在这个特定的服务器上发生这种情况。

我们真的很想使用 spl_autoload 方法而不是 include/require 这会减慢我们的应用程序。请我希望有人可以提供一些建议来帮助我们解决这个问题。

0 投票
1 回答
1301 浏览

php - 从 php.ini 包含的路径自动加载命名空间类

我有一个在项目外部目录中命名空间的类。该目录包含在include_path指令中。我想用一个spl_autoload类来自动加载该类。但是,我只得到错误。它似乎只是试图从项目目录加载文件。

这是一台 Windows 机器,但我希望它可以在 Windows 或 Linux 机器上工作

0 投票
2 回答
1057 浏览

php - 使用自定义自动加载器加载 php 核心类

我一直在论坛上搜索问题数据库,但找不到针对我的问题的解决方案。

我来找你,因为我怀疑我正在开发的自动加载器出现了。

关键是,当我尝试实例化一个由我定义的类时,自动加载器工作正常,但是当我尝试实例化 PHP 核心的一个类时,我会抛出以下错误。

例如,当我尝试这样做时:

然后向我抛出以下错误:

我注意到自动加载器正在尝试加载我定义路由到我的类的类。

我的问题是,如果我使用自定义自动加载器,如何加载 PHP 核心类?

我希望你能指导我解决我遇到的这个问题。

提前非常感谢您。

请原谅我没有放置自定义自动加载器的代码,我错过了。

该代码与 symfony 中使用的代码相同,但经过修改和简化。

}

但是如果你想看原始文件在这里

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/ClassLoader/ClassLoader.php

0 投票
2 回答
405 浏览

php - 如何协调 SplClassLoader 的命名空间要求与我的自定义目录布局?

我最近开始用 PHP 编写自定义 MVC 框架。这基本上是一个学习练习。

我的课程位于以下目录中:

  • 系统/库/
  • 系统/控制器/
  • 系统/型号
  • 应用程序/库/
  • 应用程序/控制器/
  • 应用/模型

我没有使用命名空间,因为我不知道如何使用命名空间和 Apache 2 处理程序样式 URL(控制器/操作/id)来实例化控制器。我创建了一个 Bootstrap 类来自动加载我的其他类:

它工作正常。但是,我知道我真的应该使用 PSR-0 推荐的实现:

https://gist.github.com/221634

However, I can't figure out how to get it to work without namespaces. It looks like the namespace is an optional pararmeter. However, if I do the following, nothing happens -- not even an error in the Apache logs:

0 投票
2 回答
757 浏览

php - 使用 SplClassLoader 时出错

首先,我正在尝试使用以下 SplClassLoader - https://gist.github.com/221634

这是我的文件结构:

这是我的名为 Group (Group.php) 的测试类

这是调用所有内容的 index.php 文件:

我收到以下错误:

在将命名空间和路径传递给加载程序时,我已经尝试了所有可能的组合。它永远不会起作用。

更新 #1 - index.php 中的第 17 行:

更新 #2 - 配置信息

  • Apache/2.2.15(红帽)
  • PHP 5.3.3

更新 #3 - 我现在收到不同的错误消息。

代码到位:

我收到的错误消息:

0 投票
1 回答
7922 浏览

php - PHP:如何自动加载接口和抽象

我最初有这个自动加载器类来自动加载,但现在我也classes想自动加载。interfacesabstracts

所以我在这个答案之后做出了改变,

我对其进行了测试,但这个自动加载器类根本不加载接口。有什么我错过的想法吗?

例如,这是我的接口文件,

及其内容,

下面是我的整个这个自动加载器类。

0 投票
1 回答
1515 浏览

php - Symfony ClassLoader 无法加载

我正在开发一个供个人使用的小型 php 框架。我正在尝试使用 Symfony 中使用的 UniversalClassLoader 自动加载类,但是当我尝试使用这些类时出现错误

致命错误:在第 14 行的 /opt/lampp/htdocs/web/globeapi/Start.php 中找不到类“控制器”

这是Start.php文件代码。

这是Controller类的代码

这是 Auto.php 文件的代码,它返回用于自动加载的类数组。

0 投票
1 回答
231 浏览

php - UniversalClassLoader 没有加载类

我编写了一个小型 php mvc 框架,我想自动加载我的类,如控制器、模型等。为此,我尝试使用 Symfony 的 UniversalClassLoader,他只是不会加载类,当我尝试使用它们时,我得到了这个错误

这是 Bootstrap.php

这是Controller.php

我也试过 MapClassLoader 但结果是一样的。