跳转到内容

Phalcon命令行界面

注意

所有类都以前缀命名Phalcon

Cli\Console

GitHub上的源码

  • 命名空间

    • Phalcon\Cli
  • 使用

    • Phalcon\Application\AbstractApplication
    • Phalcon\Cli\Console\Exception
    • Phalcon\Cli\Router\Route
    • Phalcon\Di\DiInterface
    • Phalcon\Events\ManagerInterface
  • 继承

    AbstractApplication

  • 实现

该组件允许使用Phalcon创建命令行应用程序

属性

/**
 * @var array
 */
protected $arguments;

/**
 * @var array
 */
protected $options;

方法

public function handle( array $arguments = null );
处理所有命令行任务

public function setArgument( array $arguments = null, bool $str = bool, bool $shift = bool ): Console;
设置特定参数

Cli\Console\Exception

GitHub上的源码

  • 命名空间

    • Phalcon\Cli\Console
  • 使用

  • 继承

    \Phalcon\Application\Exception

  • 实现

在Phalcon\Cli\Console中抛出的异常将使用此类

Cli\Dispatcher

GitHub上的源码

  • 命名空间

    • Phalcon\Cli
  • 使用

    • Phalcon\Cli\Dispatcher\Exception
    • Phalcon\Dispatcher\AbstractDispatcher
    • Phalcon\Events\ManagerInterface
    • Phalcon\Filter\FilterInterface
  • 继承

    CliDispatcher

  • 实现

    • DispatcherInterface

分发过程是获取命令行参数,提取其中包含的模块名、任务名、动作名和可选参数,然后实例化一个任务并调用其动作。

use Phalcon\Di\Di;
use Phalcon\Cli\Dispatcher;

$di = new Di();

$dispatcher = new Dispatcher();

$dispatcher->setDi($di);

$dispatcher->setTaskName("posts");
$dispatcher->setActionName("index");
$dispatcher->setParams([]);

$handle = $dispatcher->dispatch();

属性

/**
 * @var string
 */
protected $defaultHandler = main;

/**
 * @var string
 */
protected $defaultAction = main;

/**
 * @var string
 */
protected $handlerSuffix = Task;

/**
 * @var array
 */
protected $options;

方法

public function callActionMethod( mixed $handler, string $actionMethod, array $params = [] ): mixed;
调用动作方法。

public function getActiveTask(): TaskInterface;
返回分发器中的活动任务

public function getLastTask(): TaskInterface;
返回最后分发的控制器

public function getOption( mixed $option, mixed $filters = null, mixed $defaultValue = null ): mixed;
按名称或数字索引获取选项

public function getOptions(): array;
获取已分发的选项

public function getTaskName(): string;
获取最后分发的任务名

public function getTaskSuffix(): string;
获取默认任务后缀

public function hasOption( mixed $option ): bool;
检查选项是否存在

public function setDefaultTask( string $taskName ): void;
设置默认任务名

public function setOptions( array $options ): void;
设置要分发的选项

public function setTaskName( string $taskName ): void;
设置要分发的任务名

public function setTaskSuffix( string $taskSuffix ): void;
设置默认任务后缀

protected function handleException( \Exception $exception );
处理用户异常

protected function throwDispatchException( string $message, int $exceptionCode = int );
抛出内部异常

Cli\Dispatcher\Exception

GitHub上的源码

  • 命名空间

    • Phalcon\Cli\Dispatcher
  • 使用

  • 继承

    \Phalcon\Dispatcher\Exception

  • 实现

在Phalcon\Cli\Dispatcher中抛出的异常将使用此类

Cli\DispatcherInterfaceInterface

GitHub上的源码

  • 命名空间

    • Phalcon\Cli
  • 使用

    • Phalcon\Dispatcher\DispatcherInterface
  • 继承

    DispatcherInterfaceBase

  • 实现

Phalcon\Cli\Dispatcher接口

方法

public function getActiveTask(): TaskInterface;
返回分发器中的活动任务

public function getLastTask(): TaskInterface;
返回最后分发的控制器

public function getOptions(): array;
获取已分发的选项

public function getTaskName(): string;
获取最后分发的任务名

public function getTaskSuffix(): string;
获取默认任务后缀

public function setDefaultTask( string $taskName ): void;
设置默认任务名

public function setOptions( array $options ): void;
设置要分发的选项

public function setTaskName( string $taskName ): void;
设置要分发的任务名

public function setTaskSuffix( string $taskSuffix ): void;
设置默认任务后缀

Cli\Router

GitHub上的源码

  • 命名空间

    • Phalcon\Cli
  • 使用

    • Phalcon\Cli\Router\Exception
    • Phalcon\Cli\Router\Route
    • Phalcon\Cli\Router\RouteInterface
    • Phalcon\Di\AbstractInjectionAware
    • Phalcon\Di\DiInterface
  • 继承

    AbstractInjectionAware

  • 实现

    • RouterInterface

Phalcon\Cli\Router是标准的框架路由器。路由是从命令行参数中获取信息并分解为参数以确定哪个模块、任务和动作应该接收请求的过程。

$router = new \Phalcon\Cli\Router();

$router->handle(
    [
        "module" => "main",
        "task"   => "videos",
        "action" => "process",
    ]
);

echo $router->getTaskName();

属性

/**
 * @var string
 */
protected $action = ;

/**
 * @var string
 */
protected $defaultAction = ;

/**
 * @var string
 */
protected $defaultModule = ;

/**
 * @var array
 */
protected $defaultParams;

/**
 * @var string
 */
protected $defaultTask = ;

/**
 * @var RouteInterface|null
 */
protected $matchedRoute;

/**
 * @var array
 */
protected $matches;

/**
 * @var string
 */
protected $module = ;

/**
 * @var array
 */
protected $params;

/**
 * @var array
 */
protected $routes;

/**
 * @var string
 */
protected $task = ;

/**
 * @var bool
 */
protected $wasMatched = false;

方法

public function __construct( bool $defaultRoutes = bool );
Phalcon\Cli\Router构造函数

public function add( string $pattern, mixed $paths = null ): RouteInterface;
向路由器添加路由

$router->add("/about", "About::main");

public function getActionName(): string;
返回处理后的动作名

public function getMatchedRoute(): RouteInterface | null;
返回匹配处理URI的路由

public function getMatches(): array;
返回正则表达式匹配的子表达式

public function getModuleName(): string;
返回处理后的模块名

public function getParameters(): array;
返回处理后的额外参数

public function getParams(): array;
返回处理后的额外参数

@todo 在未来版本中弃用此功能

public function getRouteById( mixed $id ): RouteInterface | bool;
根据ID返回路由对象

public function getRouteByName( string $name ): RouteInterface | bool;
根据名称返回路由对象

public function getRoutes(): Route[];
返回在路由器中定义的所有路由

public function getTaskName(): string;
返回处理后的任务名

public function handle( mixed $arguments = null );
处理从命令行参数接收到的路由信息

public function setDefaultAction( string $actionName ): Router;
设置默认的动作名称

public function setDefaultModule( string $moduleName ): Router;
设置默认模块名

public function setDefaultTask( string $taskName ): void;
设置默认控制器名

public function setDefaults( array $defaults ): Router;
设置默认路径数组。如果路由缺少路径,路由器将使用此处定义的路径。此方法不应用于设置404路由

$router->setDefaults(
    [
        "module" => "common",
        "action" => "index",
    ]
);

public function wasMatched(): bool;
检查路由器是否匹配任何已定义的路由

Cli\Router\Exception

GitHub上的源码

  • 命名空间

    • Phalcon\Cli\Router
  • 使用

  • 继承

    \Exception

  • 实现

在Phalcon\Cli\Router中抛出的异常将使用此类

Cli\Router\Route

GitHub上的源码

  • 命名空间

    • Phalcon\Cli\Router
  • 使用

  • 继承

  • 实现

    • RouteInterface

此类表示添加到路由器的每个路由

常量

const DEFAULT_DELIMITER =  ;

属性

/**
 * @var mixed|null
 */
protected $beforeMatch;

/**
 * @var string
 */
protected $compiledPattern = ;

/**
 * @var array
 */
protected $converters;

/**
 * @var string
 */
protected $delimiter;

/**
 * @var string
 */
protected static $delimiterPath;

/**
 * @var string
 */
protected $description = ;

/**
 * @var string
 */
protected $routeId;

/**
 * @var string
 */
protected $name = ;

/**
 * @var array
 */
protected $paths;

/**
 * @var string
 */
protected $pattern = ;

/**
 * @var int
 */
protected static $uniqueId = ;

方法

public function __construct( string $pattern, mixed $paths = null );

public function beforeMatch( mixed $callback ): RouteInterface;
设置在路由匹配时调用的回调。开发人员可以在此处实现任何任意条件。如果回调返回false,则认为路由未匹配

public function compilePattern( string $pattern ): string;
替换模式中的占位符,返回有效的PCRE正则表达式

public function convert( string $name, mixed $converter ): RouteInterface;
添加转换器以对某些参数执行附加转换

public static function delimiter( string $delimiter = null ): void;
设置路由分隔符

public function extractNamedParams( string $pattern ): array | bool;
从字符串中提取参数

public function getBeforeMatch(): mixed;
如果存在,返回"before match"回调

public function getCompiledPattern(): string;
返回路由的编译模式

public function getConverters(): array;
返回路由器转换器

public static function getDelimiter(): string;
获取路由分隔符

public function getDescription(): string;
返回路由的描述

public function getName(): string;
返回路由的名称

public function getPaths(): array;
返回路径

public function getPattern(): string;
返回路由的模式

public function getReversedPaths(): array;
返回使用位置作为键和名称作为值的路径

public function getRouteId(): string;
返回路由的ID

public function reConfigure( string $pattern, mixed $paths = null ): void;
重新配置路由,添加新模式和一组路径

public static function reset(): void;
重置内部路由ID生成器

public function setDescription( string $description ): RouteInterface;
设置路由的描述

public function setName( string $name ): RouteInterface;
设置路由的名称

$router->add(
    "/about",
    [
        "controller" => "about",
    ]
)->setName("about");

Cli\Router\RouteInterfaceInterface

GitHub上的源码

  • 命名空间

    • Phalcon\Cli\Router
  • 使用

  • 继承

  • 实现

Phalcon\Cli\Router\Route接口

方法

public function compilePattern( string $pattern ): string;
替换模式中的占位符,返回有效的PCRE正则表达式

public static function delimiter( string $delimiter = null );
设置路由分隔符

public function getCompiledPattern(): string;
返回路由的模式

public static function getDelimiter(): string;
获取路由分隔符

public function getDescription(): string;
返回路由的描述

public function getName(): string;
返回路由的名称

public function getPaths(): array;
返回路径

public function getPattern(): string;
返回路由的模式

public function getReversedPaths(): array;
返回使用位置作为键和名称作为值的路径

public function getRouteId(): string;
返回路由的ID

public function reConfigure( string $pattern, mixed $paths = null ): void;
重新配置路由,添加新模式和一组路径

public static function reset(): void;
重置内部路由ID生成器

public function setDescription( string $description ): RouteInterface;
设置路由的描述

public function setName( string $name ): RouteInterface;
设置路由的名称

Cli\RouterInterfaceInterface

GitHub上的源码

  • 命名空间

    • Phalcon\Cli
  • 使用

    • Phalcon\Cli\Router\RouteInterface
  • 继承

  • 实现

Phalcon\Cli\Router接口

方法

public function add( string $pattern, mixed $paths = null ): RouteInterface;
在任何HTTP方法上向路由器添加路由

public function getActionName(): string;
返回处理后的动作名

public function getMatchedRoute(): RouteInterface | null;
返回匹配处理URI的路由

public function getMatches(): array;
返回正则表达式匹配的子表达式

public function getModuleName(): string;
返回处理后的模块名

public function getParameters(): array;
返回处理后的额外参数

public function getParams(): array;
返回处理后的额外参数 @todo 在未来弃用此功能

public function getRouteById( mixed $id ): RouteInterface;
根据ID返回路由对象

public function getRouteByName( string $name ): RouteInterface;
根据名称返回路由对象

public function getRoutes(): RouteInterface[];
返回路由器中定义的所有路由

public function getTaskName(): string;
返回处理后的任务名

public function handle( mixed $arguments = null );
处理从重写引擎接收到的路由信息

public function setDefaultAction( string $actionName ): void;
设置默认的动作名称

public function setDefaultModule( string $moduleName ): void;
设置默认模块名

public function setDefaultTask( string $taskName ): void;
设置默认任务名

public function setDefaults( array $defaults ): void;
设置默认路径数组

public function wasMatched(): bool;
检查路由器是否匹配任何已定义的路由

Cli\Task

GitHub上的源码

  • 命名空间

    • Phalcon\Cli
  • 使用

    • Phalcon\Di\Injectable
    • Phalcon\Events\EventsAwareInterface
    • Phalcon\Events\ManagerInterface
  • 继承

    Injectable

  • 实现

    • EventsAwareInterface
    • TaskInterface

每个命令行任务都应该扩展这个类,该类封装了所有任务功能

任务可以用来运行“任务”,例如迁移、定时任务、单元测试,或任何你想要的功能。Task类至少应该有一个“mainAction”方法。

class HelloTask extends \Phalcon\Cli\Task
{
    // This action will be executed by default
    public function mainAction()
    {

    }

    public function findAction()
    {

    }
}

属性

/**
 * @var ManagerInterface
 */
protected $eventsManager;

方法

final public function __construct();
Phalcon\Cli\Task 构造函数

public function getEventsManager(): ManagerInterface | null;
返回内部事件管理器

public function setEventsManager( ManagerInterface $eventsManager ): void;
设置事件管理器

Cli\TaskInterfaceInterface

GitHub上的源码

  • 命名空间

    • Phalcon\Cli
  • 使用

  • 继承

  • 实现

任务处理程序的接口

无噪 Logo
无噪文档
25 年 6 月翻译
文档源↗