问题标签 [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 - 有一种方法可以使用 CLASS_EXISTS 和 __autoload 而不使脚本崩溃?
例子:
类名.php
在另一个文件...
这段代码的输出是: 这将导致所有崩溃
取而代之的是: ClassName 不存在....
自动加载功能:
php - Codeigniter AUtoload 和 Flourish Autoload 函数之间的冲突
我正在开发一个 Web 应用程序,使用 Codeigniter ( http://codeigniter.com/ ) 框架加上 Flourish 库 ( unframework ) ( http://flourishlib.com/ )。
我只是将繁茂文件夹放入我的应用程序,然后按照说明创建了一个繁茂初始化和配置文件(这些文件创建了 Flourish 自动加载)。
这是我的文件夹结构:
---auxcode\
--------init.php
--------config.php
--------flourish\
---system\
---application\
---公共_html\
init 文件只包含配置文件,配置文件内容如下所示:
}
在 public_html 中,索引文件已添加以下内容:
<?php
include_once($_SERVER['DOCUMENT_ROOT'] . '/../inc/init.php');
现在,各自的自动加载功能(因为每个都有自己的)是冲突的。该应用程序仅在我注释掉任一框架的自动加载功能(及其依赖项)时才有效。
请问如何合并自动加载功能,以便我可以访问 CI 并以相同的方式蓬勃发展?
或者是否有更好的方法在一个应用程序中使用这两个系统?请说。
谢谢。
jquery - 更改滚动逻辑的自动加载(防止用户等待)
目前,当用户到达网站底部时,我使用以下逻辑从数据库中自动加载新帖子:
很公平。它做了它应该做的事情,但我想改变它,以便当用户距离网站底部 100 像素时,它开始加载新帖子。有任何想法吗?当我尝试更改代码时,我要么:
** 进入了 last_msg_function() 调用的几乎无限循环,因为 if() 语句匹配例如从底部 100 像素的距离以及滚动时每个像素下降到 0 像素。所以,如果你滚动的速度真的很慢,你可能会设法在距离底部正好 100 像素处停下来,但这在现实生活中是行不通的。
**) 它必须与我定义的底部的像素完全匹配,例如 90 像素。如果您在 89 或 91 像素处停止滚动,它将不会加载任何内容。
那么,我应该改变什么以确保它在距离站点底部 0 -> 100 像素时开始加载,但同时不要每次都发送新请求以将滚动位置更改几个像素还在加载的时候有什么方向吗?
谢谢!
php - 将 PHP spl_autoload_register() 与 Codeigniter 一起使用
请问如何将 spl_autoload_register() 与 Codeigniter 一起使用?我需要这样做,因为我将 Codeigniter 与另一个也使用自动加载的框架一起使用。
我在这里看到了一些东西
但我不知道如何定位 CodeIgniter 自动加载。我是 OOP 和 Codeigniter 的新手。非常感谢!
上面的链接有这个:
php - PHP 全局、嵌套/继承的自动加载
PHP 5.3.3-pl1-gentoo (cli)(构建:2010 年 8 月 17 日 18:37:41)
大家好,我在项目的主文件(index.php)中使用了一个简单的自动加载器:
问题:没有它require_once("./../shared/SqlTool.php");
,脚本无法执行SqlHD.php,因为它自己找不到SqlTool.php,并且由于某种原因它不使用主文件中定义的自动加载例程。
我试过这个:
好,
PHP 警告:require_once(./../shared/SqlTool.php}):无法打开流:第 20 行的 /home/beep/work/php/hauthd/index.php 中没有这样的文件或目录 PHP 致命错误: require_once():在 /home/beep/work/php 中打开所需的 './../shared/SqlTool.php}' (include_path='.:/usr/share/php5:/usr/share/php') 失败/hauthd/index.php 第 20 行
所以它不会对扩展类的任何请求做出反应。
最后一个想法:把 spl_autoload_register 放到每个文件中。但不能把它放到“扩展”指令本身!
PS 可能使用工厂模式重写 SqlTool.php,因此它会自动返回项目特定类的实例,但这似乎不是最好的方法,或者它是..?
javascript - 我可以在全球以外的任何地方注入谷歌 AJAX API 自动加载吗?
我正在努力解决这个问题。我知道谷歌可视化地图的自动加载必须在您文档的一部分。
问题是每次我在我的应用程序中重新加载其他页面时,谷歌都会重新加载所有内容,而我想删除这个。所以我尝试服用:
从我的全局模板中取出并在页面调用发生时注入它。因此,仅在需要时才加载 google API,以便将加载时间保持在绝对低水平。我想知道这是否可行,以及谷歌自动加载是否必须始终存在于全局中。
我正在使用 Prototype Javascript 框架,这是我注入自动加载的代码:
这使它远离站点的其余部分,但根本不起作用。我是否在考虑这个错误,或者我是否有可能只在一个地方而不是在任何地方加载 API。
谢谢
php - PHP 的 __autoload() 有多独特?
PHP 的__autoload()
(文档)对我来说非常有趣。以下是它的工作原理:
- 您尝试使用一个类,例如
new Toast_Mitten()
(脚注1) - 该类尚未加载到内存中。PHP 缩回拳头,让你犯错。
- 它暂停。“等等,”它说。“
__autoload()
定义了一个函数。” 它运行它。 - 在该函数中,您以某种方式将字符串映射
Toast_Mitten
到classes/toast_mitten.php
并告诉它需要该文件。确实如此。 - 现在该类在内存中,您的程序继续运行。
内存好处:你只加载你需要的类。简洁的好处:您可以停止在任何地方包含如此多的文件,而只需包含您的自动加载器。
事情变得特别有趣,如果
1)您__autoload()
有一种从类名中自动确定文件路径和名称的方法。例如,也许您所有的课程都在classes/
并且Toast_Mitten
将在classes/toast_mitten.php
. 或者,也许您将类命名为Animal_Mammal_Weasel
,它将位于classes/animal/mammal/animal_mammal_weasel.php
.
2)您使用工厂方法来获取类的实例。
Mitten::factory 方法可以对自己说,“让我们看看,我有一个名为 的子类Toast_Mitten()
吗?如果有,我将返回它;如果没有,我将返回我自己的一个通用实例 - 一个标准的连指手套。哦,看!__autoload()
告诉我有一个专门的吐司类。好的,这是一个实例!
因此,您可以开始在整个代码中使用通用手套,当您需要为 toast 提供特殊行为的那一天到来时,您只需创建该类并bam!- 您的代码正在使用它。
我的问题是双重的:
- (事实)其他语言有类似的结构吗?我看到Ruby 有一个 autoload,但似乎您必须在给定的脚本中指定您希望在哪些类上使用它。
- (观点)这也太神奇了吧?如果你最喜欢的语言不这样做,你会想,“嘿,漂亮,我们应该有那个”或“我很高兴语言 X 不是那么马虎?”
1 我向非英语母语人士道歉。这是一个小笑话。据我所知,没有“烤面包手套”这样的东西。如果有,那将是拿起热吐司的手套。也许您在自己的国家/地区有敬酒手套?
ruby-on-rails - 从 Rails 3 插件中重新打开自动加载的类?
我有一个 Rails 3 应用程序,它定义了一些正常的类。我试图弄清楚如何在插件中重新打开其中一个类(由“rails generate plugin ...”生成),并自动拥有这两个文件(应用程序本身的文件和插件中的文件)在开发模式下重新加载每个请求。
一个简单的例子是:
呈现该视图时,我收到 Bike::Plugin 未初始化的错误。我已将 root/lib 和 root/vendor/plugins/plugin1/lib 添加到我的 autoload_paths 中(理想情况下,插件会将其添加到其 init.rb 或类似的地方,但一次只添加一件事)。
我该怎么做?autoload_at 看起来可能会有所帮助,如果我可以告诉它从两个位置显式地自动加载 Person 类,但我没有运气(不过我对它完全陌生,所以我可能传递了错误的参数等)。最后,我想使用在标准位置(特别是模型)中定义的类来做到这一点,而不仅仅是 lib。
ruby-on-rails - Rails3 在开发模式下不会重新加载 lib 中的代码
情况:
我有
/li>lib/foo/bar.rb
一个简单方法的代码,定义如下:在我的助手中
/li>FooBarHelper
,我有:在我看来,我这样称呼这个辅助方法:
/li>在我的
/li>config/environments/development.rb
中,我将目录添加到我的config.autoload_paths
:
问题:
Foo::Bar.test
例如,当我将返回值更改为时"MODIFIED FOOBAR"
,原始返回值"FooBar"
仍然显示在视图上,而不是新值。
由于我处于开发模式,代码不应该在每个请求上重新加载代码吗?
有人能告诉我我错过了什么吗?
谢谢!