トップ  > メモ一覧  > カテゴリ「コマンド」の絞り込み結果 : 10件

10件中 1 〜 10 表示  1 

No.2817 ビヘイビアで作られたスキーマの内容の確認

./symfony doctrine:generate-migrations-diff

実際のDBとschemaの差を確認してくれるとのこと
data/migrations/generated/
にファイルが出来る
更新:2010/07/15 03:13 カテゴリ: symfony  > コマンド ▲トップ

No.2285 ルーティングの確認コマンド

./symfony app:routes pc_frontend
更新:2010/04/15 02:44 カテゴリ: symfony  > コマンド ▲トップ

No.2247 templateのみ削除する「symfony cc」

./symfony cc  --type=template
更新:2010/04/01 18:11 カテゴリ: symfony  > コマンド ▲トップ

No.1941 Symfonyで複数台のWebサーバ環境においてmigrateする方法

Symfonyで複数台のWebサーバ環境においてmigrateする方法

出典: Public KFSPedia

Webサーバ1

  • php symfony openpne:migrate
  • php symfony cc

Webサーバ2

  • php symfony doctrine:build-model
  • php symfony doctrine:build-form
  • php symfony doctrine:build-filter
  • ./symfony plugin:publish-assets →pluginに設置したjavascript/css へアクセス可能にする(シンボリックリンクをはる)
    symfony project:permission
  • php symfony cc



更新:2010/03/20 20:35 カテゴリ: symfony  > コマンド ▲トップ

No.2021 PHPでコマンドライン・アプリケーションを簡単に作成する

PHPでコマンドライン・アプリケーションを簡単に作成する


本日は、PHPで簡単にコマンドライン・アプリケーションを作成できるライブラリをご紹介します。
(本日ご紹介するライブラリは実際には開発途中のものでドキュメントなども存在しません。こういうものがある、程度でとらえていただければ幸いです。)

さて、みなさんsymfonyはご存じでしょうか。symfonyといえば仏Sensio社が提供するオープンソースのPHPフレームワークです。 symfonyはいわゆるフルスタックフレームワークでMVCをベースに様々な機能が提供されています。symfonyにはsymfonyコマンドが存在 しており、実際の開発ではこのsymfonyコマンドをもちいて、アプリケーションの雛形やデータベース操作などをコマンドラインで行うことが可能です。

こういったコマンドラインでアプリケーションの雛形を生成したりする機能は、symfony以外のフレームワークでも広く採用されています。こういったオリジナルのコマンドを作っておけば楽なことは色々とあるでしょう。
ただ、実際に作ろうと思った場合、例えばコマンドに渡す引数の展開や、コマンドの一覧の確認であったり、コマンドの出力結果に色をつけたいなど、少々面倒なことも考慮しなくてはなりません。

そこで登場するのが、本日ご紹介する「Console」というSymfonyコンポーネントです。Consoleの前に、Symfonyコンポーネントについて説明します。


■SymfonyコンポーネントとSymfony 2.0

Symfonyコンポーネントは、Symfonyの内部から機能を独立させたライブラリ群です。例えばYAMLのパース/ダンプを行う「YAML」、 Observerパターンをもちいてオブジェクト間で疎結合なやりとりを行うための「Event Dispatcher」、他にも現在のsymfonyではまだ使われていない、DIコンテナの実装である「Dependency Injection」などがあります。

これらは前述の通りスタンドアロンなライブラリです。Symfony ComponentsというWebサイトが別途用意されており、ここからドキュメントなども閲覧可能です。

Symfony Componentsのページをご覧になればわかると思うのですが、Consoleコンポーネントはこのページには掲載されていません。Consoleコンポーネントはまだ開発中のものです。

src/Symfony/Components/Console at master from fabpot's symfony - GitHub

現在のsymfonyの最新バージョンは1.4です。バージョン1系の開発は1.4で終了となり、次のバージョンは2.0となります。バージョン2.0か らは開発リポジトリがGitHubに移行されており、まだまだ開発は始まったばかりですが、Symfonyの次期バージョンの開発の様子をここから見るこ とが可能です。

Consoleコンポーネントもこの中に含まれています。2.0のブランチに含まれるSymfonyコンポーネントは上記のWebサイト上にあるコンポー ネントとは若干違っており、PHP 5.3以上専用であること、オートローダーを個別に持っておらず、共通のオートローダーを利用する必要があるなどいくつか注意が必要となります。

現在このブランチにはオートローダーとコンポーネントしか入っていないため、とりあえず丸ごと持ってきてしまえば良いかと思います。


■Consoleコンポーネントでコマンドライン・アプリケーションの作成

まずはConsoleコンポーネントを利用するために、GitHubからSymfony 2.0のリポジトリを複製します。とりあえずてきとうなディレクトリの中で次のコマンドを実行します。
利用に当たって、PHP 5.3.0以上が必須となります。
(Gitは分散型バージョン管理システムの1つです。今回は特に解説しません。)

  1. $ git clone git://github.com/fabpot/symfony.git

これでリポジトリの複製を含むsymfonyというディレクトリができました。
何はともあれ、簡単なコマンド用スクリプトを作ります。

  1. #!/usr/bin/env php-5.3.1
  2. <?php
  3. $symfonyLibDir = realpath(__DIR__ . '/symfony/src');
  4. require $symfonyLibDir . '/Symfony/Foundation/ClassLoader.php';
  5.  
  6. $classLoader = new Symfony\Foundation\ClassLoader();
  7. $classLoader->registerNamespace('Symfony', $symfonyLibDir);
  8. $classLoader->register();
  9.  
  10. use Symfony\Components\Console\Application;
  11. $application = new Application(basename(__FILE__));
  12. $application->run();

このコードをmycommandという名前で保存し、実行権限を付与しておきます。
なお、1行目(shebang)は各自の環境に合わせて変更をお願いします。

コードの内容を説明します。3~8行目はオートローダーの設定です。10行目以降がConsoleアプリケーションの利用になります。
11行目でApplicationというクラスを生成しています。コンストラクタの第1引数にファイル名を渡していますが、ここにはコマンドの名前を指定 します。コマンド名=ファイル名ですので、ここではファイル名を指定しておきます。第2引数は指定していませんが、本来はここにアプリケーションのバー ジョンを指定します。
作成したアプリケーションのrun()メソッドを呼び出すと、コマンド呼び出し時の引数をパースして処理してくれます。
(名前空間を利用していますが、名前空間がわからない方は以前僕が勉強会で発表した資料があるので参考にしていただければと思います。)

このコマンドの実行結果は次のようになります。



コマンドを実行してみると、下部にAvailable commandsという項目が表示されています。デフォルトではhelpとlistの2つが用意されています。Usageにある「command」という 部分にコマンド名を指定するような仕組みになっています。上の画像ではcommandには何も指定していません。commandが省略された場合、 listコマンドが呼び出されるようになっています。

helpコマンドは各コマンドのヘルプを表示するためのコマンドです。listコマンドのヘルプを参照したい場合、「./mycommand help list」と入力するとlistコマンドのヘルプが表示されます。


■カスタムコマンドを作成

先ほどまででコマンドライン・アプリケーション自体は作成できました。もちろんこれだけでは役に立ちません。実際にカスタムコマンドを作成します。
例として、引数で渡した文字列を大文字にして出力するコマンドを作成します。

  1. <?php
  2.  
  3. use Symfony\Components\Console\Input\InputArgument;
  4. use Symfony\Components\Console\Input\InputInterface;
  5. use Symfony\Components\Console\Output\OutputInterface;
  6. use Symfony\Components\Console\Command\Command;
  7.  
  8. class StrtolowerCommand extends Command
  9. {
  10.   protected function configure()
  11.   {
  12.     $this
  13.       ->setDefinition(array(
  14.         new InputArgument('string', InputArgument::REQUIRED, '文字列'),
  15.       ))
  16.       ->setName('strtolower')
  17.       ->setDescription('渡された文字列を小文字に変換する')
  18.       ->setHelp(<<<EOF
  19. <info>strtolower</info>コマンドは渡された文字列を全て小文字に変換します:
  20.  
  21.   <info>./symfony strtolower string</info>
  22.  
  23. EOF
  24.       );
  25.   }
  26.  
  27.   protected function execute(InputInterface $input, OutputInterface $output)
  28.   {
  29.     $string = $input->getArgument('string');
  30.     $lowerString = strtolower($string);
  31.  
  32.     $output->writeln($lowerString);
  33.   }
  34. }

上記をStrtolowerCommand.phpとして保存します。configure()とexecute()という2つのprotectedなメソッドを実装していますが、configure()ではコマンドの引数の設定やヘルプ・コマンド名の設定を行っています。
execute()は実際にコマンドが実行されたときの挙動です。

少し細かく見ていきます。configure()で、まずはsetDifinition()を実行しています。これは引数の定義です。そこに InputArgumentオブジェクトを渡していますが、これは引数を表すオブジェクトです。InputArgumentのコンストラクタの第1引数は 引数につける名称です。第2引数にInputArgument::REQUIREDという定数を渡していますが、これは必須の引数であることを指定してい ます。必須でない場合はOPTIONALを指定します。第3引数は引数の説明です。第4引数は省略していますが、デフォルト値を設定したい場合はここに含 めます。

setName()はコマンド名の設定です。今回はstrtolowerコマンドとします。単純に名前を設定するだけではなく、「:(コロン)」を用いて 名前空間を指定することが可能です。symfony 1.4などを使ったことがある方はご存じかと思われますが、例えばDoctrineに関連するコマンドはdoctrineという名前空間に属しており、 doctrine:buildやdoctrine:migrateのようなコマンド名になります。名前空間を指定しておけばコマンド名の衝突も避けられま すし、listコマンドに名前空間を指定することで、特定の名前空間に属するコマンドの一覧の表示が可能になります。

また、コマンド名にはエイリアスを指定することも可能です。setAliases()メソッドに配列でエイリアス名を渡すと、その名前でもコマンドが呼び出せるようになります。

execute()では、まず入力された引数を取得しています。入力情報は第1引数の$inputに渡されるオブジェクトが保持してお り、$input->getArgument("setDefinitionで指定した引数名")で取得可能です。第2引数の$outputは出力 情報を扱うオブジェクトです。このオブジェクトのwriteln()メソッドに文字列を渡すことで、文字列を出力します。

ではこのコマンドを実際に実行可能にするため、mycommandファイルを開いて次のように修正します。

  1. #!/usr/bin/env php-5.3.1
  2. <?php
  3. $symfonyLibDir = realpath(__DIR__ . '/symfony/src');
  4. require $symfonyLibDir . '/Symfony/Foundation/ClassLoader.php';
  5.  
  6. $classLoader = new Symfony\Foundation\ClassLoader();
  7. $classLoader->registerNamespace('Symfony', $symfonyLibDir);
  8. // オートロードの指定
  9. $classLoader->registerNamespace('', __DIR__);
  10. $classLoader->register();
  11.  
  12. use Symfony\Components\Console\Application;
  13.  
  14. $application = new Application(basename(__FILE__));
  15. // コマンドの追加
  16. $application->addCommand(new StrtolowerCommand());
  17. $application->run();



ここで重要となるのはsetDefinition()に指定する引数などの設定です。InputArgumentの他にInputOptionクラスもあ ります。オプションは引数と違い、--で始まるものです。例として、先ほどのStrtolowerコマンドに渡された文字列の中にスペースが入っていた場 合に取り除くstrip-spacesオプションを追加してみます。

  1. <?php
  2.  
  3. use Symfony\Components\Console\Input\InputArgument;
  4. use Symfony\Components\Console\Input\InputOption;     // 追加(1)
  5. use Symfony\Components\Console\Input\InputInterface;
  6. use Symfony\Components\Console\Output\OutputInterface;
  7. use Symfony\Components\Console\Command\Command;
  8.  
  9. class StrtolowerCommand extends Command
  10. {
  11.   protected function configure()
  12.   {
  13.     $this
  14.       ->setDefinition(array(
  15.         new InputArgument('string', InputArgument::REQUIRED, '文字列'),
  16.         // 追加(2)
  17.         new InputOption('strip-spaces', 's', InputOption::PARAMETER_NONE, '指定した場合は空白を削除'),
  18.       ))
  19.       ->setName('strtolower')
  20.       ->setDescription('渡された文字列を小文字に変換する')
  21.       ->setHelp(<<<EOF
  22. <info>strtolower</info>コマンドは渡された文字列を全て小文字に変換します:
  23.  
  24.   <info>./symfony strtolower string</info>
  25.  
  26. EOF
  27.       );
  28.   }
  29.  
  30.   protected function execute(InputInterface $input, OutputInterface $output)
  31.   {
  32.     $string = $input->getArgument('string');
  33.     $lowerString = strtolower($string);
  34.  
  35.     // 追加(3)
  36.     if ($encoding = $input->getOption('strip-spaces')) {
  37.       $strips = array(' ', ' ');
  38.       $lowerString = str_replace($strips, array_fill(0, count($strips), ''), $lowerString);
  39.     }
  40.  
  41.     $output->writeln($lowerString);
  42.   }
  43. }

StrtolowerCommand.phpに3箇所追加しました。(1)はクラスのインポートです。(2)はオプションの追加です。 InputOptionのコンストラクタはInputArgument若干違い、第2引数にはショートカット名を渡します。本来は--strip- spacesと指定しますが、第2引数に文字列を指定しておけば、例えば上記の用にsと指定した場合は-sで呼び出せるようになります。第3引数はオプ ションに渡す値の種別です。PARAMETER_NONEは--strip-spacesのように、オプションに対して値を指定しない場合に使用します。 PARAMETER_REQUIREDを指定すると、--strip-spaces=trueのように値を必ず指定しなければなりません。どちらでも良い 場合はPARAMETER_OPTIONALを、同じオプションに複数の値を指定したい場合はPARAMETER_IS_ARRAYを指定します。あとは InputArgumentとほとんど同じです。

というわけでコマンドを再度実行してみます。



このようにして、コマンドの追加も簡単におこなえます。引数の指定など細かくおこなえますし、メソッドを2つ実装するだけでいいのはとても楽です。


■対話式シェルを作成

Consoleコンポーネントは対話式のシェルを作成することも可能です。

  1. <?php
  2.  
  3. use Symfony\Components\Console\Input\InputInterface;
  4. use Symfony\Components\Console\Output\OutputInterface;
  5. use Symfony\Components\Console\Command\Command;
  6. use Symfony\Components\Console\Shell;
  7.  
  8. class ShellCommand extends Command
  9. {
  10.   protected function configure()
  11.   {
  12.     $this
  13.       ->setName('shell');
  14.   }
  15.  
  16.   protected function execute(InputInterface $input, OutputInterface $output)
  17.   {
  18.     $shell = new Shell($this->application);
  19.     $shell->run();
  20.   }
  21. }

このコードをShellCommand.phpという名前で保存します。忘れずにmycommandにShellCommandを追加しましょう。

  1. <?php
  2. // ...
  3.  
  4. $application->addCommand(new ShellCommand());
  5. $application->run();

これで完了です。Shellというクラスを生成してrun()メソッドを呼ぶだけです。その際にコンストラクタにApplicationを渡しています が、Commandクラスの中で$this->applicationを参照するとApplicationオブジェクトが取得可能です。



このシェルのいいところは、タブを押すことで補完をしてくれることや、ホームディレクトリに .histry_アプリケーション名 というファイルを作成して履歴の保存をしてくれるところです。ちなみにCtrl+Cで抜けられます。


簡単にではありましたが、Consoleコンポーネントのご紹介は以上です。Symfony 2が開発中で、実際にSymfonyコンポーネントが将来どうなるかなどまだまだ見えないところがあると思います。
ただ、このSymfonyコンポーネントはSymfony以外でも使える有用なライブラリが揃っており、また今後もどんどん増えていく予定です。Symfony Componentsのページに掲載されているコンポーネントは今回使ったものとは違い、PHP 5.3以前のものでも利用可能です。興味のある方はぜひこのSymfonyコンポーネントを使ってみてください。

引用元

更新:2010/01/21 10:06 カテゴリ: symfony  > コマンド ▲トップ

No.1940 Symfonyでアプリの設置ディレクトリを変更した場合に行うこと

Symfonyでアプリの設置ディレクトリを変更した場合に行うこと



2009年12月28日 (月) 02:59 時点における最新版

rm cache/project_autoload.cache

更新:2009/12/28 22:41 カテゴリ: symfony  > コマンド ▲トップ

No.1719 symfonyのキャッシュがおかしくなった;;

動かなくなった。
devモードでも表示されない

ログを見ると

PHP Fatal error:  require() [<a href='function.require'>function.require</a>]: Failed opening required '/home/hoge/sns/demo.hoge.jp/cache/pc_frontend/dev/config/config_config_handlers.yml.php' (include_path='/・・・') in /usr/share/pear/symfony/config/sfConfigCache.class.php on line 276

とか出てる

以下のコマンドをたたくべし!

symfony fix-perms
symfony 1.4 で廃止されるらしい・・・

symfony project:permissions
→こっちを使うべし!

symfonyのキャッシュ用ディレクトリの権限を正常にもどしてくれるらしい
更新:2009/11/11 15:19 カテゴリ: symfony  > コマンド ▲トップ

No.1721 プラグインの中のweb/*へのシンボリックリンクが張られてない時は

プラグインの中の web/* へのシンボリックリンクが張られてない時は

symfony plugin:publish-assets

やるべし


更新:2009/11/10 17:19 カテゴリ: symfony  > コマンド ▲トップ

No.835 ユーティリティコマンド

◆確認コマンド:ルーティング設定一覧の表示
SF app:routes frontend
+α:
SF app:routes frontend job_edit

更新:2009/05/05 17:40 カテゴリ: symfony  > コマンド ▲トップ

No.815 symfony1.2で使えるコマンド一覧

$ symfony1.2

Usage:
  symfony [options] task_name [arguments]

Options:
  --dry-run     -n  Do a dry run without executing actions.
  --help        -H  Display this help message.
  --quiet       -q  Do not log messages to standard output.
  --trace       -t  Turn on invoke/execute tracing, enable full backtrace.
  --version     -V  Display the program version.

Available tasks:
  :help                       Displays help for a task (h)
  :list                       Lists tasks
app
  :routes                     ルーていぃんぐ設定確認
cache
  :clear                      Clears the cache (cc, clear-cache)
configure
  :author                     Configure project author
  :database                   Configure database DSN
generate
  :app                        Generates a new application (init-app)
  :module                     Generates a new module (init-module)
  :project                    Generates a new project (init-project)
  :task                       Creates a skeleton class for a new task
i18n
  :extract                    Extracts i18n strings from php files
  :find                       Finds non "i18n ready" strings in an application
log
  :clear                      Clears log files (log-purge)
  :rotate                     Rotates an application log files (log-rotate)
opGenerate
  :app                        Generates a new application for OpenPNE plugin
  :module                     Generates a new module for OpenPNE plugin
  :plugin                     Generates a new OpenPNE plugin
opPlugin
  :activate                   Activates the installed plugin.
  :archive                    Creates the OpenPNE plugin archive for a later upload.
  :deactivate                 Deactivates the installed plugin.
  :define                     Creates the plugin definition file "package.xml"
  :install                    Installs the OpenPNE plugin
  :release                    Creates the plugin definition file, archive, and uploads the OpenPNE plugin.
  :uninstall                  Uninstalls the OpenPNE plugin
  :upload                     Uploads the OpenPNE plugin.
openpne
  :install                    Install OpenPNE
plugin
  :add-channel                Add a new PEAR channel
  :install                    Installs a plugin (plugin-install)
  :list                       Lists installed plugins (plugin-list)
  :publish-assets             Publishes web assets for all plugins
  :uninstall                  Uninstalls a plugin (plugin-uninstall)
  :upgrade                    Upgrades a plugin (plugin-upgrade)
project
  :clear-controllers          Clears all non production environment controllers (clear-controllers)
  :deploy                     Deploys a project to another server (sync)
  :disable                    Disables an application in a given environment (disable)
  :enable                     Enables an application in a given environment (enable)
  :freeze                     Freezes symfony libraries (freeze)
  :permissions                Fixes symfony directory permissions (permissions, fix-perms)
  :unfreeze                   Unfreezes symfony libraries (unfreeze)
  :upgrade1.1                 Upgrade a symfony project to the 1.1 symfony release
  :upgrade1.2                 Upgrade a symfony project to the 1.2 symfony release (from 1.1)
propel
  :build-all                  Generates Propel model and form classes, SQL and initializes the database (propel-build-all)
  :build-all-load             Generates Propel model and form classes, SQL, initializes the database, and loads data (propel-build-all-load)
  :build-filters              Creates filter form classes for the current model
  :build-forms                Creates form classes for the current model
  :build-model                Creates classes for the current model (propel-build-model)
  :build-schema               Creates a schema from an existing database (propel-build-schema)
  :build-sql                  Creates SQL for the current model (propel-build-sql)
  :data-dump                  Dumps data to the fixtures directory (propel-dump-data)
  :data-load                  Loads data from fixtures directory (propel-load-data)
  :generate-admin             Generates a Propel admin module
  :generate-module            Generates a Propel module (propel-generate-crud, propel:generate-crud)
  :generate-module-for-route  Generates a Propel module for a route definition
  :graphviz                   Generates a graphviz chart of current object model
  :init-admin                 Initializes a Propel admin module (propel-init-admin)
  :insert-sql                 Inserts SQL for current model (propel-insert-sql)
  :schema-to-xml              Creates schema.xml from schema.yml (propel-convert-yml-schema)
  :schema-to-yml              Creates schema.yml from schema.xml (propel-convert-xml-schema)
test
  :all                        Launches all tests (test-all)
  :coverage                   Outputs test code coverage
  :functional                 Launches functional tests (test-functional)
  :unit                       Launches unit tests (test-unit)
更新:2009/04/27 13:08 カテゴリ: symfony  > コマンド ▲トップ
10件中 1 〜 10 表示  1 

FuelPHP

Mac

web開発

プロマネ

マネタイズ

プレゼン

webサービス運用

webサービス

Linux

サーバ管理

MySQL

ソース・開発

svn・git

PHP

HTML・CSS

JavaScript

ツール, ライブラリ

ビジネス

テンプレート

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0