问题标签 [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 - 需要时自动加载函数/类库
首先,一点背景。我工作的公司使用庞大的函数/类库,每个页面都包含它。成千上万行函数,其中 90% 可能甚至不会在页面上调用。
为了减轻服务器负载,我一直在尝试更智能的库设置。为此,我将整个文件拆分为分类库文件(即 sql.functions.php、date.functions.php 等)。
不幸的是,在每个页面上包含每个文件根本没有帮助,选择性地包含文件几乎是不可能的并且非常容易出错。
我正在寻找的是一个类似于 PHP___autoload()
函数的设置,它会在启动未知类的情况下自动搜索特定命名的文件,以尝试找到它。
但是,此函数不适用于函数调用,只能用于类。
有没有办法在调用未定义函数(即html_insert_button();
)时指示 PHP 自动查找并包含命名函数库?
(在上述情况下,html_functions.php
需要加载,因为它共享函数的前缀)
zend-framework - 如何将 Zend_Loader 从 1.7 升级到 1.8?
我一直在使用它,它在 1.7 中运行良好,但在 1.8 中不行。
它说它已被弃用,我应该改用 Zend_Loader_Autoloader,但我似乎无法让它工作。有什么建议么?
php - __autoload 搞混了?
我有一个有很多客户的服务器,当我开发时,我包含了我的 init.php,其中我有一个__autoloader()
函数,其中包含dir_name(__FILE__)."/classes/".$className
例如文件。
但是昨天我看到服务器找不到特定的类,我在 apache 上重新启动,然后它又工作了。
每个客户都有自己的 init.php...(因此同一服务器上有许多 __autoloads )
我没有做过一些测试,希望有人能在我尝试重现问题之前回答我的问题,但是您认为当您同时收到 2 个或更多请求时,php 是否有可能采用错误的自动加载功能?
spl_autoload_register 是解决方案吗?
非常感谢您的一些想法或头脑风暴。
php - PHP自动加载器:忽略不存在的包含
我的自动加载器有问题:
如您所见,这很简单。我只是推断出类的文件名并尝试包含它。我有一个问题;尝试加载不存在的类时出现异常(因为我有一个引发异常的错误处理程序)。这很不方便,因为当您在不存在的类上使用 class_exists() 时也会触发它。您不希望那里出现异常,只返回“假”。
我之前通过在包含之前放置一个 @ 来解决这个问题(抑制所有错误)。但是,这样做的最大缺点是,此包含中的任何解析器/编译器错误(致命的)都不会出现(甚至不会出现在日志中),从而导致难以找到错误。
同时解决这两个问题的最佳方法是什么?最简单的方法是在自动加载器(伪代码)中包含这样的内容:
但我担心那里的表现。会不会很痛?
(已解决)是这样的:
php - 在 PHP 5.3 中使用命名空间自动加载?
如何在 PHP 5.3 中使用带有命名空间的 _autoload?我在与我的脚本分开的命名空间中有一个主要的自动加载功能。我还调用了一个具有不同命名空间的类。(这并不奇怪,但是)它没有找到自动加载功能。我是否必须为每个命名空间重新创建自动加载功能?这似乎不是最理想的。
提前感谢您的帮助!
php - 自动加载和多个目录
我一直在看 php 的 autoload() 函数。似乎是个好主意,但我不确定它如何处理多个目录。我目前的开发基本上有一个库目录结构,通过操作将类分组到子目录中。我想知道我必须为每个目录声明一个 include() ......我真的希望我不必这样做。
你能建议 - 谢谢
php - 我可以在 PHP 中自动加载没有类的函数文件吗?
我的网站很大,我不使用 PHP 类,我对 OO 的理解还不够好,无法重写我的网站以使用它们,但是我真的很想使用类使用的 __autoload($class_name) 功能。我非常依赖函数,我有不同的函数文件,
forums.inc.php
blogs.inc.php
user.inc.php
photos.inc.php
general.inc.php
所有这些文件都只是站点特定部分的特定功能,除了 general.inc.php 将具有需要在任何页面上的功能。
现在无论如何我可以使用自动加载或制作类似的东西来加载这些函数文件吗?我曾经考虑过根据 URL 来做,比如如果 URL 中有单词 forums,我会加载 forums 函数文件,但这并不总是有效,因为与论坛相关的文件在 URL 中没有单词 forum .
在我学会编写足够好的 OO 代码以将我的所有函数放入类之前,我是否几乎没有选择?
php - PHP 操作码缓存是否与 __autoload 一起使用?
抱歉,如果这是基本的,我正在尝试尽可能多地学习 PHP 中的 OO,并且我正在慢慢学习如何使用它(非常有限)。
所以我想知道 __autoload() 是否对 PHP 操作码缓存有任何影响?
php - 在 PHP 中使用自动加载不好吗?
来自php.net:
在 PHP 5 中,这不再是必需的。您可以定义一个
__autoload()
自动调用的函数,以防您尝试使用尚未定义的类/接口。通过调用此函数,脚本引擎在 PHP 因错误而失败之前获得了最后一次加载类的机会。
现在我想知道,仅使用__autoload
在动态站点上加载适当的类是不好的做法吗?
我的网站设置方式是将文件包含到index.php
文件中,例如http://www.site.com/index.php?p=PAGE-I-WANT-TO-LOAD
因此,如果我在我网站的论坛部分或博客部分,我只想加载适当的类和函数,所以我使用自动加载但我从不手动包含文件,我应该__autoload
作为最后的手段使用还是什么即使在高流量系统上我也做得很好?
php - __autoload() 是否为自动加载类的父类调用?
在main.php
中,添加了自动加载并创建了一个新对象:
在Triangle.php
:
Shape.php
是一个抽象类:
我可以看到该__autoload
函数调用Triangle.php
,但它是否同时调用Shape.php
?