Zend Framework控制台应用程序

Mic*_*eim 2 php zend-framework2

我已经按照步骤从骨架创建了一个Zend Framework 2应用程序(http://framework.zend.com/manual/2.0/en/user-guide/skeleton-application.html)

还有一个非常好的ZF2本机控制台支持教程 http://framework.zend.com/manual/2.0/en/modules/zend.console.introduction.html

现在教程说:

我们假设我们希望我们的应用程序处理以下命令行:

> zf user resetpassword user@mail.com
Run Code Online (Sandbox Code Playgroud)

当用户使用这些参数运行我们的应用程序(zf)时,我们想调用Application\IndexController的action resetpassword.

问题是没有关于如何在CONSOLE(当前是windows)上运行脚本的描述 - 在创建的文件夹结构中没有zf或任何其他可执行脚本

任何提示?

理想情况下,应用程序根目录中的bin文件夹包含每个应用程序模块的入口脚本

例如,运行名为module1的应用程序模块

php appfolder/bin/module1.php --verbose
Run Code Online (Sandbox Code Playgroud)

要么

php appfolder/bin/cli.php module1 --verbose
Run Code Online (Sandbox Code Playgroud)

Mic*_*eim 5

我找到了解决方案.就像基于Web的ZF2应用程序一样,入口点是appfolder/public中的index.php

上面的教程中的示例应用程序以这种方式调用

php.exe public\index.php user resetpassword user@mail.com
Run Code Online (Sandbox Code Playgroud)

linux包装器调用zf2控制台应用程序

切换到您的ZF2应用程序文件夹

mkdir bin    
touch bin/app
chmod +x bin/app
Run Code Online (Sandbox Code Playgroud)

把它放到你的app文件中

#!/bin/sh
PHP_BIN=`which php`
WDIR=`dirname ${0}"`
if test -x "${PHP_BIN}"; then
    cd "${WDIR}"
    "${PHP_BIN}" "../public/index.php" "${@}"
    exit "${?}"
fi
echo "php binary not found, please install php-cli"
exit 1;
Run Code Online (Sandbox Code Playgroud)

现在你应该能够以这种方式运行你的应用程序

app user resetpassword user@mail.com
Run Code Online (Sandbox Code Playgroud)

  • 在linux中你可以使用`app.php`,其中第一行是shebang`#!/ usr/bin/env php`.然后你用`$ bin/app.php用户重置密码user @ mail.com`运行它 (3认同)