目次
1. 概要
2. コマンドを作成します
3. コンソールコマンドアクション (アクション)
4. 退出代码
5. 自定义控制台应用
ホームページ バックエンド開発 PHPチュートリアル Yii Framework 公式ガイド シリーズ 50 - 特別トピック: コンソールアプリケーション

Yii Framework 公式ガイド シリーズ 50 - 特別トピック: コンソールアプリケーション

Feb 16, 2017 am 09:53 AM



コンソール アプリケーションは主に、コード生成、検索インデックスのコンパイル、電子メール送信など、オンライン Web アプリケーションに必要なオフライン操作を実装するために使用されます。 Yii フレームワークは、オブジェクト指向で記述するためのコンソール アプリケーションを提供します。コンソール アプリケーションがオンライン Web アプリケーションで使用されるリソース (データベース接続情報など) にアクセスできるようにします。

1. 概要

Yii はコマンド ラインですべてのコンソール タスクを実行でき、コンソール コマンドは継承クラスです。 Cコンソールコマンド。

yiic Webapp ツールを使用して初期化された Yii アプリケーション スケルトンを作成すると、保護されたフォルダーに次の 2 つのファイルが表示されます:

  • yiic: これは Linux/Unix スクリプトで実行される実行可能ファイルです。

  • yiic.bat: これは、Windows 上で実行される実行可能なバッチ スクリプトです。

コンソール ウィンドウで、次のコマンドを入力できます:

cd protected
yiic help
ログイン後にコピー

これにより、一連のコンソール コマンドが表示されます。デフォルトでは、これらの有効なコマンドには、Yii フレームワークによって提供されるもの (システムコマンド) と、スタンドアロンアプリケーション用に開発者自身が作成したもの (ユーザーコマンド) が含まれます。

Yii Framework 公式ガイド シリーズ 50 - 特別トピック: コンソールアプリケーション

コマンドの使用方法を確認したい場合は、次のコマンドを使用できます:

yiic help <command-name></command-name>
ログイン後にコピー

コマンドを実行するには、次のコマンド形式を使用できます:

yiic <command-name> [parameters...]</command-name>
ログイン後にコピー

2. コマンドを作成します

コンソールコマンドが保存されます。クラス ファイルの形式 CConsoleApplication::command の形式のパス。デフォルトでは、protected/commands フォルダーを指します。

コンソール コマンド クラスは、CConsoleCommand の形式である必要があります。 XyzCommand。Xyz は名前の最初の文字が大文字のコマンドを表します。たとえば、サイトマップ コマンドはクラス名 SitemapCommand を使用する必要があります。コンソール コマンド名は大文字と小文字が区別されます。

ヒント: CConsoleApplication::command の一致を構成すると、さまざまな形式で名前が付けられ、さまざまなフォルダーに保存されたコマンド クラスを取得できます。

新しい For コマンドを作成するには、多くの場合、CConsoleCommand::run() をオーバーライドするか、1 つ以上のコマンド アクションを開発する必要があります。

コンソール コマンドを実行すると、コンソール アプリケーションによって CConsoleCommand::run() メソッドが呼び出されます。すべてのコンソール パラメーターも、次のメソッド フラグメントの形式でこのメソッドに渡されます:


public function run($args) { ... }
ログイン後にコピー

ここで、$args はコマンド ラインで指定された追加パラメーターを表します。

コンソールコマンドでは、Yii::app()を使用してコンソールアプリケーションインスタンスにアクセスできるだけでなく、データベース接続などのリソースにもアクセスできます(例:Yii::app()->db)。この使用法は、Web アプリケーションでの使用法と非常に似ていることがわかります。

情報: バージョン 1.1.1 以降、同じマシン上のすべての Yii アプリケーションで共有されるグローバル コマンドを作成することもできます。既存のフォルダーを指すように YII_CONSOLE_COMMANDS という名前の環境変数を定義すると、グローバル コマンド クラスでこのフォルダーに配置されます。

3. コンソールコマンドアクション (アクション)

注: このコンソールコマンドアクション機能は、バージョン 1.1.5 以降で有効です。

コンソール コマンドは、さまざまなコマンド ライン パラメーターを処理する必要があることがよくあります。コンソール コマンドには、さまざまなサブタスクを処理するためのサブコマンドも提供する必要があります。これらのタスクは、コンソール コマンド アクションを使用して簡素化できます。

コンソール コマンド アクションは、コンソール コマンド クラスのメソッドです。メソッド名は、actionXyz の形式にする必要があります。Xyz は、最初の文字を大文字にしたアクション名を表します。たとえば、actionIndex メソッドは、index という名前のアクションを定義します。

特定のアクションを実行するには、次のコマンド ライン形式を使用できます:

yiic <command-name> <action-name> --option1=value1 --option2=value2 ...</action-name></command-name>
ログイン後にコピー
追加のオプションと値のペアが名前付きパラメーターとしてアクション メソッドに渡されます。xyz 操作の値は $xyz になります。パラメーターは に渡されます。アクションメソッド。たとえば、次のコマンド クラスを定義すると:


class SitemapCommand extends CConsoleCommand
{
    public function actionIndex($type, $limit=5) { ... }
    public function actionInit() { ... }
}
ログイン後にコピー

次に、actionIndex('News', 5) を呼び出すと、次のコンソール コマンドの結果が得られます。が指定されている場合 (例: --type=News の代わりに --type)、対応する action パラメータ値は true であるとみなされます。

注:
はオプションのパラメーター形式 --type News、-t News をサポートしていません。

パラメーター値は配列にすることができます (配列タイプのヒントが必要です):


yiic sitemap index --type=News --limit=5

// $limit takes default value
yiic sitemap index --type=News

// $limit takes default value
// because 'index' is a default action, we can omit the action name
yiic sitemap --type=News

// the order of options does not matter
yiic sitemap index --limit=5 --type=News
ログイン後にコピー

コマンドライン引数で配列値を使用するには、同じオプションを繰り返すだけです:

public function actionIndex(array $types) { ... }
ログイン後にコピー
上記のコマンドは最終的に actionIndex(array('News', 'Article')) を呼び出します。

バージョン 1.1 以降。 6 から、Yii は匿名アクションパラメータとグローバルオプションの使用もサポートします。

匿名参数表示这些命令行参数不是以选项的形式呈现. 例如, 在命令 yiic sitemap index --limit=5 News中, 我们有一个值为News的匿名参数和命名参数 limit,其值为5。

为了使用匿名参数, 一个命令动作必须声明参数为 $args的形式. 例如,


public function actionIndex($limit=10, $args=array()) {...}
ログイン後にコピー

$args数组将会装入所有的匿名参数值.

全局选项代表那些命令行选项可以被一个命令中所有动作共享的选项. 例如, 在一个命令中提供了多个选项, 我们可能想要每一个动作识别一个名为verbose的动作. 当然我们可以在每一个动作方法中声明 $verbose 参数, 一个更好的方式是将其声明为这个命令类的公有成员变量, 将 verbose 转换为全局参数:


class SitemapCommand extends CConsoleCommand
{
    public $verbose=false;
    public function actionIndex($type) {...}
}
ログイン後にコピー

上面的代码允许我们执行一个带 verbose 选项的命令:

yiic sitemap index --verbose=1 --type=News
ログイン後にコピー

4. 退出代码

Note: 在控制台命令中退出代码的特性从版本 1.1.11起有效.

通过cronjob或者使用一个持续集成的服务器自动运行控制台命令的时候, 要么命令运行运行成功,要么命令运行失败. 这可以通过检查进程返回的退出代码来查看。

这些退出码是从0-254的整型值(this is the range in php world), 其中 0 表示退出成功其他的所有非0值表示出现了错误.

在一个动作方法或者控制台命令的 run() 方法中你可以在退出时返回整型值退出码 ,例如:


if (/* error */) {
    return 1; // exit with error code 1
}
// ... do something ...
return 0; // exit successfully
ログイン後にコピー

如果没有返回值, 应用将会退出返回 0.

5. 自定义控制台应用

默认情况下, 如果一个应用是使用yiic webapp工具创建的, 命令行应用的配置将会放在 protected/config/console.php文件中. 和一个Web应用配置文件一样, 这个文件是一个返回控制台应用实例的初始化配置值的数组的PHP脚本。所以CConsoleApplication的任何公有属性都可以在该文件中配置.

因为控制台命令经常被创建来服务于Web应用, 所以需要访问资源(如数据库连接)。我们可以在控制台配置文件中以如下方式来实现 :


return array(
    ......
    'components'=>array(
        'db'=>array(
            ......
        ),
    ),
);
ログイン後にコピー

正如我们所看到的那样, 配置的格式和我们在Web应用中的配置类似.这是因为CConsoleApplication和 CWebApplication 的基类相同。

 以上就是Yii框架官方指南系列50——专题:控制台应用的内容,更多相关内容请关注PHP中文网(www.php.cn)!


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Yii フレームワークでの RESTful API 開発 Yii フレームワークでの RESTful API 開発 Jun 21, 2023 pm 12:34 PM

Yii は、PHP をベースにした高性能 MVC フレームワークで、Web アプリケーションの迅速かつ効率的な開発をサポートする非常に豊富なツールと機能のセットを提供します。中でも、Yii フレームワークの RESTful API 機能は、Yii フレームワークを使用することで高性能で拡張性の高い RESTful インターフェースを簡単に構築でき、Web アプリケーションの開発を強力にサポートできるため、ますます開発者の注目と愛を集めています。 RESTfulAPI の概要 RESTfulAPI は

PHP で Yii フレームワークを使用する方法 PHP で Yii フレームワークを使用する方法 Jun 27, 2023 pm 07:00 PM

Web アプリケーションの急速な開発に伴い、最新の Web 開発は重要なスキルになりました。効率的な Web アプリケーションを開発するために多くのフレームワークやツールが利用できますが、その中でも Yii フレームワークは非常に人気のあるフレームワークです。 Yii は、最新のデザインパターンとテクノロジーを使用し、強力なツールとコンポーネントを提供し、複雑な Web アプリケーションの構築に最適な、高性能のコンポーネントベースの PHP フレームワークです。この記事では、Yii フレームワークを使用して Web アプリケーションを構築する方法について説明します。まずYiiフレームワークをインストールし、

Yii フレームワークを使用して Web ページのキャッシュとページのチャンクを実装する手順 Yii フレームワークを使用して Web ページのキャッシュとページのチャンクを実装する手順 Jul 30, 2023 am 09:22 AM

Yii フレームワークを使用して Web ページのキャッシュとページのチャンクを実装する手順 はじめに: Web 開発プロセス中、Web サイトのパフォーマンスとユーザー エクスペリエンスを向上させるために、多くの場合、ページのキャッシュとチャンクが必要になります。 Yii フレームワークは強力なキャッシュとレイアウト機能を提供しており、開発者が Web ページのキャッシュとページ チャンキングを迅速に実装できるようにします。この記事では、Yii フレームワークを使用して Web ページのキャッシュとページ チャンキングを実装する方法を紹介します。 1. Web ページのキャッシュをオンにする Yii フレームワークでは、設定ファイルを通じて Web ページのキャッシュをオンにすることができます。メイン設定ファイルを開きます。

Yii フレームワークミドルウェア: アプリケーションに複数のデータストレージサポートを提供 Yii フレームワークミドルウェア: アプリケーションに複数のデータストレージサポートを提供 Jul 28, 2023 pm 12:43 PM

Yii フレームワークのミドルウェア: アプリケーションに複数のデータ ストレージのサポートを提供する はじめに ミドルウェア (ミドルウェア) は、Yii フレームワークの重要な概念であり、アプリケーションに複数のデータ ストレージのサポートを提供します。ミドルウェアはフィルターのように機能し、アプリケーションのリクエストとレスポンスの間にカスタム コードを挿入します。ミドルウェアを通じて、リクエストを処理、検証、フィルタリングし、処理された結果を次のミドルウェアまたは最終ハンドラーに渡すことができます。 Yii フレームワークのミドルウェアは非常に使いやすいです

Yii フレームワークを使用してゲームガイド Web サイトを作成する Yii フレームワークを使用してゲームガイド Web サイトを作成する Jun 21, 2023 pm 01:45 PM

近年、ゲーム業界の急速な発展に伴い、ゲームをクリアするためのゲーム戦略を模索するプレイヤーがますます増えています。したがって、ゲームガイド Web サイトを作成することで、プレイヤーはゲームガイドを入手しやすくなると同時に、プレイヤーにより良いゲーム体験を提供することができます。このような Web サイトを作成する場合、開発には Yii フレームワークを使用できます。 Yii フレームワークは、PHP プログラミング言語に基づいた Web アプリケーション開発フレームワークです。高効率、セキュリティ、強力な拡張性という特徴があり、ゲームガイドをより迅速かつ効率的に作成するのに役立ちます。

Yii Framework Middleware: アプリケーションにロギング機能とデバッグ機能を追加します。 Yii Framework Middleware: アプリケーションにロギング機能とデバッグ機能を追加します。 Jul 28, 2023 pm 08:49 PM

Yii フレームワーク ミドルウェア: アプリケーションにロギング機能とデバッグ機能を追加する [はじめに] Web アプリケーションを開発する場合、通常、アプリケーションのパフォーマンスと安定性を向上させるために、いくつかの機能を追加する必要があります。 Yii フレームワークは、アプリケーションがリクエストを処理する前後にいくつかの追加タスクを実行できるようにするミドルウェアの概念を提供します。この記事では、Yii フレームワークのミドルウェア機能を使用してロギングとデバッグ機能を実装する方法を紹介します。 【ミドルウェアとは】 ミドルウェアとは、アプリケーションがリクエストを処理する前後のリクエストとレスポンスの処理を指します。

Yii フレームワークでコントローラーを使用して Ajax リクエストを処理する方法 Yii フレームワークでコントローラーを使用して Ajax リクエストを処理する方法 Jul 28, 2023 pm 07:37 PM

Yii フレームワークでは、コントローラーはリクエストの処理において重要な役割を果たします。通常のページ リクエストの処理に加えて、コントローラーを使用して Ajax リクエストを処理することもできます。この記事では、Yii フレームワークで Ajax リクエストを処理する方法を紹介し、コード例を示します。 Yii フレームワークでは、Ajax リクエストの処理は次の手順で実行できます。 最初の手順は、コントローラー (Controller) クラスを作成することです。 Yii フレームワークが提供する基本コントローラークラス yiiwebCo を継承できます。

Yii フレームワークミドルウェアを使用して機密データを暗号化および復号化する Yii フレームワークミドルウェアを使用して機密データを暗号化および復号化する Jul 28, 2023 pm 07:12 PM

Yii フレームワークミドルウェアを使用した機密データの暗号化と復号化 はじめに: 最新のインターネット アプリケーションでは、プライバシーとデータ セキュリティが非常に重要な問題です。ユーザーの機密データに権限のない訪問者がアクセスできないようにするには、このデータを暗号化する必要があります。 Yii フレームワークは、機密データの暗号化と復号化の機能を実装するためのシンプルかつ効果的な方法を提供します。この記事では、Yii フレームワークのミドルウェアを使用してこれを実現する方法について説明します。 Yii フレームワークの概要 Yii フレームワークは、高性能の PHP フレームワークです。

See all articles