Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在引导之前在Zend框架之外加载PHP脚本_Php_Apache_Zend Framework - Fatal编程技术网

在引导之前在Zend框架之外加载PHP脚本

在引导之前在Zend框架之外加载PHP脚本,php,apache,zend-framework,Php,Apache,Zend Framework,在我的zend framework应用程序启动并运行之前,我需要运行一次php脚本。现在可以通过在my/public/index.php中调用这个初始脚本来实现,但是该脚本也会为所有后续zend framework页面请求运行。我需要这个脚本只在初始请求时运行一次,而不是在通过ajax加载其他页面时再次运行 我最初尝试在/public/index.php文件中设置一些php常量,如下所示: 如果(!defined('SOME_VAR'))需要_once'path/to/script/to/run

在我的zend framework应用程序启动并运行之前,我需要运行一次php脚本。现在可以通过在my/public/index.php中调用这个初始脚本来实现,但是该脚本也会为所有后续zend framework页面请求运行。我需要这个脚本只在初始请求时运行一次,而不是在通过ajax加载其他页面时再次运行

我最初尝试在/public/index.php文件中设置一些php常量,如下所示:

如果(!defined('SOME_VAR'))需要_once'path/to/script/to/run/once.php'; 定义('SOME_VAR','1)

然而,当通过ajax加载另一个页面时,即使我已经定义了“SOME_VAR”,它也不会保持并保持定义的状态,脚本将再次执行

我使用的是Zend Framework 1.11,Apache(Xampp)

在Zend启动并运行(在Zend框架内)后执行此脚本不是一个选项

根据:

但是,如果需要自定义初始化,您有两种选择。首先,您可以编写前缀为_init的方法来指定要引导的离散代码。这些方法将由bootstrap()调用,也可以像调用公共方法一样调用:bootstrap()。他们应该接受可选的选项数组。 如果您的资源方法返回一个值,它将存储在引导中的一个容器中。当不同的资源需要交互时(例如一个资源将自身注入另一个资源),这可能很有用。然后可以使用getResource()方法检索这些值

另一个选择是使用资源插件。资源插件是执行特定初始化的对象,可以指定为:

  • 在实例化Zend_应用程序对象时
  • 在引导对象初始化期间
  • 通过对引导对象的方法调用显式启用它们

资源插件实现Zend_Application_Resource_ResourceAbstract,它简单地定义了它们允许调用方和选项的注入,并且它们有一个init()方法

常量不起作用,因为它们只在请求期间存在

听起来您想确定当前请求是常规请求还是XmlHttpRequest(AJAX)请求

您可以在index.php的顶部尝试以下操作:

<?php
define('IS_AJAX_REQUEST', isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
    && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');

if (! IS_AJAX_REQUEST){
    // run your code.
}

请有人告诉他上下文。谢谢你对常量的解释。如果请求不是Ajax,而我的问题仍然存在怎么办?应该有一些“Zend-like”的方法来启动一个外部脚本,只设置一次前端html,然后继续执行Zend所做的事情。@whitespy:如果外部脚本的目的是将一些html呈现到输出中,那么它听起来不需要在引导之前执行。在这种情况下,通过前端控制器插件、动作助手或仅仅在布局视图脚本本身中进行更改就足够了。或者在引导之前需要进行外部处理还有其他原因吗?@DavidWeinraub:脚本还有很多其他功能(身份验证、渲染链接等),但总体结果是显示一些动态html。我知道这在引导后会更好,但我现在正试图避免这种情况。在zf w/layouts/action helpers中重新创建此脚本的工作量远远超过了它的价值。