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)
我找到了解决方案.就像基于Web的ZF2应用程序一样,入口点是appfolder/public中的index.php
上面的教程中的示例应用程序以这种方式调用
php.exe public\index.php user resetpassword user@mail.com
Run Code Online (Sandbox Code Playgroud)
切换到您的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)