cli.php 3.07 KB
<?php
/**
 * Created by PhpStorm.
 * User: Alex Savenko
 * Date: 09.12.2016
 * Time: 13:54
 */


use Phalcon\DI\FactoryDefault\CLI as CliDI;
use Phalcon\Cli\Console as ConsoleApp;
use Phalcon\Loader;



define( 'PATH_SRC',     realpath(__DIR__.'/../').'/' );
define( 'ROOT_PATH',    realpath(__DIR__.'/../').'/' );
define( 'SERVER_NAME',  'semena'                     );

$config = require PATH_SRC.'lib/config.php';
config::setApp( 'tasks' );



/**
 * Регистрируем автозагрузчик, и скажем ему, чтобы зарегистрировал каталог задач
 */
$loader = new Loader();

$loader->registerDirs(
    [
        PATH_SRC.config::get( 'dirs/controllersDir' ),
        PATH_SRC.config::get( 'dirs/librariesDir' ),
        PATH_SRC.config::get( 'dirs/modelsDir' ),
    ]
);

$loader->registerNamespaces(
    [
        'controllers'       => ROOT_PATH.config::get( 'dirs/controllersDir' ),
        'lib'               => ROOT_PATH.config::get( 'dirs/librariesDir' ),
        'models'            => ROOT_PATH.config::get( 'dirs/modelsDir' ),
    ]
);

$loader->register();

/////////////////////////////////////////////////////////////



// Используем стандартный для CLI контейнер зависимостей
$di = new CliDI();

$di->set("config", $config);

$di->set( 'cache', function()
{
    $cache = new \Phalcon\Cache\Frontend\Data([
        'lifetime' => 60,
    ]);

    return new \Phalcon\Cache\Backend\Memcache(
        $cache,
        [
            'host'  => '127.0.0.1',
            'port'  => 11211,
        ]
    );
}, true );

$di->set( 'database', function()
{
    $config =
        [
            'host'      => config::get('global#database/server'),
            'username'  => config::get('global#database/user'),
            'password'  => config::get('global#database/passwd'),
            'dbname'    => config::get('global#database/db'),
            'schema'    => 'public',
        ];

    $database       = new \Phalcon\Db\Adapter\Pdo\Postgresql( $config );

    return $database;

}, true );

$di->set( 'db', function()
{
    return new \db();
}, true );

$di->set( 'common', function()
{
    return new \common();
}, true );

$di->set('modelsManager', function() {
    return new \Phalcon\Mvc\Model\Manager();
});

$di->set( 'models', function()
{
    return new \models();
}, true );

$di->set( 'sendmail', function()
{
    return new \sendmail();
}, true );

/////////////////////////////////////////////////////////////


// Создаем консольное приложение
$console = new ConsoleApp();

$console->setDI($di);

/////////////////////////////////////////////////////////////

/**
 * Определяем консольные аргументы
 */
$arguments = [];

foreach ($argv as $k => $arg) {
    if ($k === 1) {
        $arguments["task"] = $arg;
    } elseif ($k === 2) {
        $arguments["action"] = $arg;
    } elseif ($k >= 3) {
        $arguments["params"][] = $arg;
    }
}



try {
    $console->handle($arguments);
} catch (\Phalcon\Exception $e) {
    echo $e->getMessage();

    exit(255);
}