问题标签 [autoload]
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 编写一个防弹的 __autoload 函数
我正在尝试将我的 PHP __autoload 函数定义为尽可能防弹和灵活。
这是我的应用程序结构的细分:
这是相当直截了当的。我的问题是:我如何编写我的 __autoload 函数,以便我可以包含我想要的任何类,而不管调用文件在目录结构中的嵌套有多深。我知道它与__FILE__
,realpath
和dirname
函数有关,但我不确定将它们组合起来以实现我所追求的灵活性的适当方式。
这是我做的一个快速测试:
结果:
/home/mydirectory/dev.mysite.com/my_app/php/scripts/php/classes/Class1.php
如您所见,结果与类所在的位置不匹配。但是,如果我将 myscript.php 文件移动到 /my_app 文件夹中,它将正确打印。
使这更灵活的建议?
php - 在 php 中包含路径和 __autoload 函数
我正在尝试将几个 php 脚本转换为使用 __autoload 函数。现在我可以使用 include 和 require 函数,如下所示:
但是在 __autoload 函数内部,我不能使用上面的行。我必须使用这个:
为什么 __autoload 函数似乎没有使用我在 php.ini 中指定的包含路径?
php - 关于一个简单的 PHP Autoloader 的问题
我刚刚学习 PHP 命名空间并开始创建一个简单的自动加载函数。O所做的是:
因此,如果我不使用任何别名或导入语句,例如,这将有效。use MainNamespace\Subnamespace
因为如果我这样做了,假设我有:
如果我尝试这样做:
它之所以有效,是因为$name
在自动加载中会变得GreatApp\Models\User
如此GreatApp\Models\User.php
。但是当我这样做时:
它失败了,因为现在$name
是公正的User
,User.php
不会被发现。那我应该如何设置自动加载呢?
unit-testing - 处理 PHPUnit 路径问题
当我尝试从当前 MVC 框架应用程序中运行 PHPUnit 时出现以下错误
我已经设法将该错误追溯到几件事的组合。
当我注释掉
PHPUnit 运行测试
当我注释掉
我明白了
如果我注释掉所有其他目录,请保存
我收到“无法重新声明”错误。
我可以运行实际测试的唯一方法是,如果我在没有 set_include_path 语句的情况下运行并手动包含任何单个单元测试调用的所有类文件。
有任何想法吗?
编辑:似乎与 __autoload 函数有冲突。我仍然不太确定如何解决这个问题。
php - PHP __autoload 性能
我有一个脚本用于autoload
加载未找到的类。我没有故意包含该文件(尽管我可以),但我希望自动加载功能包含所需的文件。
因为脚本可以是递归的,也就是说如果已经加载了类,我不想class_exists
在脚本的每个递归中检查相应的文件是否已加载。
ruby-on-rails - 从 Rails 3 中的 lib 文件夹加载模块/类的最佳方法?
由于最新的 Rails 3 版本不再从 lib 中自动加载模块和类,那么加载它们的最佳方式是什么?
来自 github:
php - PHP - 如何在 __autoload() 函数中使用变量
我正在使用的自动加载功能如下:-
它不需要任何其他论据吗?我想根据自动加载函数中的一些变量执行一些逻辑。在不使用全局变量的情况下如何做到这一点?
谢谢
额外细节
我认为这在 __autoload() 类中是不可能的,但仍然试图用一个例子来解释。
我有一个 modules.config 文件,它有一个数组:-
上面的数组意味着在 search_classes 视图的情况下必须包含类 commonClassListings,在 search_packs 视图的情况下必须包含类 commonPackListings。对于所有其他视图,默认情况下,将包含 commonDisplay 类
现在,我认为 __autoload 函数内部的逻辑必须移出,首先必须计算要加载的视图,然后只需要调用自动加载。这也是自动加载的目的(包括启动其对象的类文件)。
更新
我的自动加载功能不在我将在运行时启动其对象的视图类中(与 Blizz 的示例不同)。我在 pageLoader.php 文件中定义了一个常见的自动加载函数,该文件包含在常见的 froncontroller 中。对于每个模块,视图类的启动方式如下
然后通用自动加载功能必须检查相应的父视图类(在这种情况下为commonClassListings)是否存在,如果存在则包含它和search_classes视图本身并启动对象,否则回退。为此,我需要将$viewClassMap
数组传递给自动加载函数。那可能吗?
php - 函数 __autoload & 使用 require_once / 忽略某些实例
我正在为某个库使用自动加载功能......但我正在尝试实现 Doctrine,但我收到了 500 内部服务器错误。
我相信它是因为我正在创建 = 新实例并在自动加载中......它检查了一个不同的目录。
有没有办法创建将忽略自动加载功能的类的新实例?或者我应该移动我的自动加载功能检查的目录中的所有学说文件......理想情况下,我不想这样做以在我的项目中保留库的结构。
php - 有什么方法可以避免为非 oo 应用程序加载未使用的类?
我的应用程序使用一个“中央”页面控制器,它在获取请求之前使用 require_once 抓取一堆文件(我不敢说是库),每个文件都包含一些相关的类。如:
ETC...
直到最近安装(真棒,但巨大的)“HTML Purifier”库并查看它的自动加载器之前,我才费心检查内存使用情况。显然,没有自动加载器,每个脚本实例现在的内存使用量高达(天哪!)5376 KB。(如果这是最终结果,我不知道内置自动加载器的用途,但我离题了)没有 HTML Purifier,大多数实例的重量仍然超过 1 MB。
阅读有关PHP 自动加载函数的信息,我得到的印象是自动加载器严格用于 OOP。除了净化器库之外,我使用的面向对象代码很少。我只是误解了这个概念吗?有没有其他实用的方法来避免盲目加载每个请求可能不需要的一堆类?我只是因为试图将它们全部包含在内而懒惰吗?
编辑 -
在此处重复此评论以澄清我所说的非 oo 的意思,如果这有很大的不同:
我基本上使用类来代替命名空间,而不使用(几乎)任何实际的 OOP。也就是说,“DBFunctions”类可能包含例如函数“execute”和“getRow”。这些函数通过诸如“dbFunctions::execute($sql)”之类的静态方法调用来调用。
javascript - 另一个简单的 jQuery 进度条问题
我想修改此代码,以便该值是一个变量,以便进度条实时刷新(或可能的最小时间米 - 毫秒)
我将“播种”当前时间以推动更新
Fosco的编辑:(目前不工作)