我正在尝试使用Symfony2控制台和ClassLoader组件编写命令行应用程序。
这是我的代码层次结构和被调用脚本的屏幕截图
这是CLI脚本:
#!/usr/bin/env php
<?php
require_once(dirname(__FILE__) . '/code/ClassLoader/UniversalClassLoader.php');
use Symfony\Component\ClassLoader\UniversalClassLoader;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use BlueHeadStudios\Command\Deployer;
$loader = new UniversalClassLoader();
$loader->register();
$input = new ArgvInput();
$debug = $input->hasParameterOption(array('--debug', ''));
$console = new Application();
$console->add(new Deployer());
$console->run();
运行脚本时我得到了这个
dev@server:~/sites/pd/deployer$ php deployer.php
PHP Fatal error: Class 'Symfony\Component\Console\Input\ArgvInput' not found in /home/dev/sites/pd/deployer/deployer.php on line 13
我知道它必须是一个简单的registerNamespace
电话或类似的东西,但我已经尝试了多次注册,但无法让它发挥作用。
非常感谢任何帮助。
答案 0 :(得分:3)
我建议您使用composer生成autoload.php
,以便将其包含在文件顶部:
#!/usr/bin/env php
<?php
require_once './vendor/autoload.php';
use Symfony\Component\ClassLoader\UniversalClassLoader;
$loader = new UniversalClassLoader();
$loader->registerNamespace('BlueHeadStudios', __DIR__.'/src/');
$loader->register();
// write your code below
答案 1 :(得分:1)
您应该使用app/console
运行该应用程序,然后选中example here