gpt4 book ai didi

php - Zend_Console_Getopt 和应用程序环境 - 如何使用参数设置 APP_ENV?

转载 作者:行者123 更新时间:2023-12-04 18:13:05 26 4
gpt4 key购买 nike

我现在在构建允许使用 zend for app 构建控制台脚本的机制时遇到问题。例如像:

--脚本

----index.php

----basecmd.php

当 basecmd 包含其他脚本的主类时,文件结构为

include index.php
....
MyClass extends Zend_Console_Getopt{

但在 index.php 中,我需要使用参数设置 APPLICATION_ENVOIRMENT 作为 --application_env 发送到脚本
我的问题是我可以在使用 getopt 解析参数时设置它,但是如何在 index.php 中进行设置?
信息:我需要显示如下错误:
'application_env 必须在运行脚本时始终设置'
我将不胜感激任何指导。

最佳答案

如果我理解正确,您正在尝试从 CLI/CMD 运行您的应用程序,方法是调用 basecmd.php,它将设置变量/常量以使 index.php 正常工作

您的 basecmd.php 应如下所示:

#!/usr/bin/env php
<?php
// basecmd.php
require_once 'path/to/Zend/Console/Getopt.php';
try {
$opts = new Zend_Console_Getopt(
array(
'app-env|e=s' => 'Application environment',
'app-path|ap=s' => 'Path to application folder',
'lib-path|lp=s' => 'Path to library',
// more options
)
);
$opts->parse();
if (!($path = $opts->getOption('ap'))) { // cli param is missing
throw new Exception("You must specify application path");
}
define('APPLICATION_PATH', $path);
// process other params and setup more constants/variables
} catch (Zend_Console_Getopt_Exception $e) {
echo $e->getUsageMessage();
exit;
} catch (Exception $e) {
echo $e->getMessage() . "\n";
exit;
}
// it is wise to setup another constant so application can determine is it a web or cli call
define('RUN_VIA', 'cli');
// if all done correctly include application loader script
include 'index.php';

在您的 index.php 中,您应该只测试是否已经定义了常量或变量:
<?php
// index.php
defined('APPLICATION_PATH') // is it defined
or define('APPLICATION_PATH', '../application'); // no? then define it
defined('RUN_VIA')
or define('RUN_VIA', 'web');
// ... rest of the code

我希望这可以帮助您走上正轨;)

关于php - Zend_Console_Getopt 和应用程序环境 - 如何使用参数设置 APP_ENV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com