问题标签 [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.
php - 使用自定义自动加载器加载 php 核心类
我一直在论坛上搜索问题数据库,但找不到针对我的问题的解决方案。
我来找你,因为我怀疑我正在开发的自动加载器出现了。
关键是,当我尝试实例化一个由我定义的类时,自动加载器工作正常,但是当我尝试实例化 PHP 核心的一个类时,我会抛出以下错误。
例如,当我尝试这样做时:
然后向我抛出以下错误:
我注意到自动加载器正在尝试加载我定义路由到我的类的类。
我的问题是,如果我使用自定义自动加载器,如何加载 PHP 核心类?
我希望你能指导我解决我遇到的这个问题。
提前非常感谢您。
请原谅我没有放置自定义自动加载器的代码,我错过了。
该代码与 symfony 中使用的代码相同,但经过修改和简化。
}
但是如果你想看原始文件在这里
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/ClassLoader/ClassLoader.php
autoloader - 加载几个类。如何使用 Restler3 AutoLoader?
第一:
感谢您提供的这个伟大的“Restler”!
我的背景:
我使用 Restler 3 构建我自己的 API 并返回我的用户的总分(在游戏上)。示例 : "www.mysite.com/api/score/12345" => 返回用户 id "12345" 的总分(json 对象)
但是,要获得总分(来自不同的游戏),我需要使用我自己的库(称为“scorers”)及其类:
- vendor/damGames/scorers/scoreGameA.class.php
- vendor/damGames/scorers/ scoreGameB.class.php
- 供应商/damGames/scorers/scoreGameC.class.php
- 等等...
我的问题是:
要加载我的库的类,我应该使用“Luracast\Restler\AutoLoader”吗?我不明白怎么...否则,我该怎么办?
谢谢 !
php - 同一服务器上的两个应用程序中的 Autiloader 和 PHP 会话粉碎
当我在两个具有相同框架并共享相同会话的应用程序之间切换时(因为它们位于同一台服务器上,等等 localhost),我遇到了 PHP中的Autoloader 功能的一个问题。
Autoloader 实际上一直在从另一个应用程序(从我在当前应用程序之前在同一浏览器中打开的应用程序)中搜索类(模型和库),并抛出一个错误,即在此应用程序中找不到mentoned 类。
php - Symfony 自动加载器组件
我越来越:
致命错误:类“Twig_Loader_Filesystem”
Twig 文件夹位于 library 文件夹中。我是否误解了如何使用该组件?
php - 不能通过 spl_autoload_register 加载具有命名空间的 PHP 类?
当在类中实现命名空间时,我在加载类spl_autoload_register
时遇到问题。
下面的类,但是当没有autoloader
使用命名空间时加载任何类都没有问题,
例如一个tag
类,
现在通过类加载autoloader
类,
结果,
致命错误:第7行的C:\wamp\www\website\local\applications\master\sides\views\tags.php 中找不到类 'hello\tag'
知道如何修复我的autoloader
类,以便无论是否有命名空间,我都可以加载这些类?
编辑:
我保存类和类命名的文件夹,
php - 这样使用return语句有错吗?
我有这个自动加载器方法,用于根据需要包含类文件。
这很好,但我想这样更好:
如您所见,我在循环中间使用 return 语句来终止函数的其余部分,因为已包含类文件并且该方法已完成其工作。
如果找到匹配项,哪种方式是跳出循环的最佳方式?我只是不确定是否使用 return 语句,因为我总是将它与从方法返回一些值相关联。
php - 如何不在 php 中自动加载类?
我的 php 代码开头的自动加载器
导致调用new MongoClient();
失败并出现错误Warning: include_once(MongoClient.class.php): failed to open stream
如何在我的类中使用自动加载器并且仍然使用标准类?
注意:MongoDb 已经与 PECL 一起安装,并且在删除自动加载功能后可以正常工作。php 5.4.9 上的 mongo-1.3.0beta2
php - 究竟什么时候调用自动加载器?
我有一个使用以下方法注册的自动加载器spl_autoload_register()
:
从 开始var_dump()
,自动加载器似乎在很多事情上被调用,比如要插入数据库的数据、参数化的 SQL 查询等等:
这些东西永远不会是类,所以永远不应该使用new
orclass_exists()
等加载。
在什么情况下/函数调用会调用自动加载器?我想停止自动加载不是类的“classNames”被调用,因为每个$className
都使用 进行检查file_exist()
,并且检查这些数据字符串的效率非常低。
问题已解决。我首先按照 Brad 的建议进行了回溯并将跟踪转储到文件中(只需添加一个打开文件并附加到文件的小片段)。
显然,痕迹很大,但我选择了我能找到的最简单的一个。顺便说一句,该跟踪恰好是一个称为数据库 (ORM) 包装器的跟踪器,我编写该包装器是为了包装出色的RedBean ORM 库。我转储的结果$className
也验证了这一点,因为这些字符串是数据进入或离开数据库。
话虽如此,我有一个__call()
拦截数据库包装器的方法,进行一些处理,将其传递给 RedBean,处理结果,然后将其发送回调用者。
问题:在处理过程中,我正在调用is_subclass_of()和instanceof,这显然会要求自动加载器尝试加载类(因为我们没有任何称为name =?
加载的类,也不存在)。
解决方案是实际上确保我们object
在调用之前is_subclass_of()
有一个instanceof
: if(is_object($someproperty) && is_subclass_of($someproperty))
。
如果$someproperty
不是对象,则if
立即短路instanceof
并且is_subclass_of()
永远不会调用,这意味着永远不会调用自动加载器。
正如布拉德所提到的,使用自动加载器包含各种东西require_once
可能会带来巨大的安全风险,同时,多次使用文件系统file_exists()
也是非常低效的。
因此,总而言之,每次使用instanceof
, is_subclass_of
、其他类类型函数、类存在函数和反射方法时都会调用自动加载器,正如 Charles 在他的回答中所暗示的那样。
所以,这个故事的寓意是,如果你打算使用一个类类型函数,或者上面提到的任何一个混合类型变量的函数,在将它传递给类类型函数之前先检查它。
php - 自动加载类和模型
我知道在使用 MVC 框架时自动加载控制器是一种常见的做法。我已经制作了自己的迷你框架,控制器可以很好地自动加载。
使用相同的自动加载功能加载模型是否存在任何安全/不良问题?
IE
php - 外部类未在 Laravel 中加载
刚开始使用 Laravel,在学习曲线和缺乏详细文档方面有些挣扎。我正在尝试class.upload.php
通过 verot.net 使用,但似乎无法加载该类。
我将类目录上传到application/libraries/class.upload_0.31
实际类的文件名是class.upload.php
. 然后我更新了Autoloader::map
这样的 -
然后,我尝试$handle = new upload(..);
按照 Class Upload 的文档调用该类。
我相信我正确地按照文档将一个类映射到它的位置,但我一直遇到错误Class 'upload' not found
。class.upload.php 中的类名是upload
.
我错过了什么?