5

CLIアプリケーションでphalconを使用して、argvパラメーターを使用してリクエストを処理することは可能ですか?実行する必要のあるコマンドを理解するためにargvパラメーターを使用したい。 ./script.php robot/create --color=red --feature=weapon

これをコントローラーやアクションなどでアプリケーション内に取り込むには、次のようにします。

コントローラー:ロボットアクション:GETパラメーターの作成:color = red、feature = weapon

次のようなCLIクラスを使用することは可能ですか?

  1. Phalcon \ ClI \ Dispatcher http://docs.phalconphp.com/en/latest/api/Phalcon_CLI_Dispatcher.html

  2. Phalcon \ CLI \ Console http://docs.phalconphp.com/en/latest/api/Phalcon_CLI_Console.html

  3. Phalcon \ CLI \ Task http://docs.phalconphp.com/en/latest/api/Phalcon_CLI_Task.html

と他の同様の?

ドキュメントやハウツーマニュアルはありません...おそらく誰かが経験や単なるアイデアを持っています。DIを定義してアプリケーションを初期化する必要があることは理解していますが、これをよりネイティブな方法で作成する方法については、まったく考えがありません。

また、もう1つの質問:phalconはargvパラメーターを自動的に処理できますか?

私が理解しているように、アプリケーションとしてPhalcon \ CLI \ Consoleオブジェクトを起動し、DIに渡す必要があります。しかし、全体のプロセス/シナリオ...私はそれを得ることができません:)

4

3 に答える 3

8

だから、私は次のフォルダ構造を持っています:

~/www
~/www/app
~/www/app/models
~/www/app/controllers - controllers for web
~/www/app/tasks - task for cli
~/www/public/app.php - web application
~/www/cli/app.php - console application

cli / app.phpには、次のコードがあります。

#!/usr/bin/php
<?php

/**
 * This makes our life easier when dealing with paths. 
 * Everything is relative to the application root now.
 */ 
chdir(dirname(__DIR__));

/**
 * Init loader
 */
$loader = new \Phalcon\Loader();
$loader->registerDirs(['app/tasks/'])
       ->register(); 

/**
 * Setup dependency injection      
 */       
$di = new Phalcon\DI();

// Router
$di->setShared('router', function() {
    return new Phalcon\CLI\Router();
});

// Dispatcher
$di->setShared('dispatcher', function() {
    return new Phalcon\CLI\Dispatcher();
});

/**
 * Run application
 */
$app = new Phalcon\CLI\Console();
$app->setDI($di);
$app->handle($argv);

次に、タスククラスをapp/tasksフォルダーに配置します。これでうまくいきます。おそらくこれは誰かを助けるでしょう;)

于 2013-02-11T08:19:23.820 に答える