Your SlideShare is downloading. ×
0
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Task
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Task

1,003

Published on

1 Comment
0 Likes
Statistics
Notes
  • Hello,
    my name is Rita, I came across your profile now on this Site. So I decided to stop by an let you know that I really want to have a good friendship with you. Beside i have something special i want to discuss with you, but I find it difficult to express myself here, since it's a public site. I will be very happy, If you can get back to me, through my e-mail. [miss_rita42@yahoo.com] So we can get to know each other better, and i will give you my pictures and also tell you more about me OK, you can contact me through my e-mail id Is, [miss_rita42@yahoo.com] Regard,Rita.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
1,003
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. タスクの作り方
  • 2. タスクとは? Symfony で作る CLI アプリです。 デフォルトでたくさんのタスクが用意されています。 $ ./symfony Available tasks: :help Displays help for a task :list Lists tasks app :routes Displays current routes for an application cache :clear Clears the cache (cc)  :  :  :
  • 3. タスクの作り方① <?php class SampleTask extends sfBaseTask { protected function execute($arguments = array(), $options = array()) { echo "Hello, World!"; } } $ ./symfony sample Hello, World! ファイル名は○○ Task.class.php /lib/task/ 配下に置く sfBaseTask を継承 「 symfony ○○ 」で実行できる
  • 4. CLI アプリを Symfony で作るメリット <ul><li>開発が速い </li></ul><ul><li>保守が容易 </li></ul><ul><li>Web アプリのリソースを使える </li></ul>
  • 5. タスクの作り方② $ ./symfony generate:task myapp:sample ※ myapp =ネームスペース ※ sample =タスク名 $ ./symfony myapp :sample $ ./symfony myapp:sample class myappSampleTask extends sfBaseTask { protected function configure() { $this-&gt;namespace = &apos;myapp&apos;; $this-&gt;name = &apos;sample&apos;; } protected function execute($arguments = array(), $options = array()) { } }
  • 6. ヘルプを付ける protected function configure() { $this-&gt;briefDescription = &apos; サンプルアプリ &apos;; $this-&gt;detailedDescription = ‘ これは [ サンプル |INFO] の [ アプリ |COMMENT] です。’ ; } $ ./symfony myapp :sample サンプルアプリ $ ./symfony --color help myapp:sample Usage: symfony myapp:sample Description: これは サンプル の アプリ です。
  • 7. コマンドライン引数の受け取り方 &lt;?php class SampleTask extends sfBaseTask { protected function configure() { $this-&gt;addArguments(array( new sfCommandArgument(&apos;arg1&apos;, sfCommandArgument::REQUIRED, &apos; 引数1の説明 &apos;), new sfCommandArgument(&apos;arg2&apos;, sfCommandArgument::OPTIONAL, &apos; 引数2の説明 &apos;, &apos; 初期値 &apos;), )); } protected function execute($arguments = array(), $options = array()) { echo $arguments[&apos;arg1&apos;]; } } ------------------------- $./symfony help sample Usage: symfony sample arg1 [arg2] Arguments: arg1 引数1の説明 arg2 引数2の説明 (default: 初期値 )
  • 8. コマンドラインオプションの受け取り方 &lt;?php class SampleTask extends sfBaseTask { protected function configure() { $this-&gt;addOptions(array( new sfCommandOption(&apos;opt1&apos;, &apos;O&apos;, sfCommandOption::PARAMETER_REQUIRED, &apos; オプション1の説明 &apos;), new sfCommandOption(&apos;opt2&apos;, null, sfCommandOption::PARAMETER_OPTIONAL, &apos; オプション2の説明 &apos;, &apos; 初期値 &apos;), )); } protected function execute($arguments = array(), $options = array()) { echo $options[&apos;opt1&apos;]; } } ------------------------- $ ./symfony help sample Usage: symfony sample [-O|--opt1=&amp;quot;...&amp;quot;] [--opt2[=&amp;quot;...&amp;quot;]] Options: --opt1 (-O) オプション1の説明 --opt2 オプション2の説明 (default: 初期値 )
  • 9. 終了コードと例外処理 ◆ 終了コード execute メソッドの return 値が、 CLI アプリの終了コードになる。 成功 0 失敗 0 以外 ◆ 例外 throw new sfCommandException(&apos; エラーです! &apos;, 100); catch はフレームワーク側でしてくれる。 例外発生時の終了コードは Exception::getCode() の値
  • 10. ログの出し方 protected function execute($arguments = array(), $options = array()) { $this-&gt;log(&apos;hogehoge&apos;); $this-&gt;logSection(&apos;init&apos;, &apos;hogehoge&apos;); $this-&gt;logSection(&apos;proc&apos;, &apos;hogehoge&apos;); $messages = array(&apos;hoge&apos;, &apos;hogehoge&apos;, &apos;hogehogehoge&apos;); $this-&gt;logBlock($messages, &apos;INFO&apos;); } $ ./symfony sample hogehoge &gt;&gt; init hogehoge &gt;&gt; proc hogehoge hoge hogehoge hogehogehoge なぜ echo や print ではだめなのか? -&gt; ログも event で実現しています
  • 11. DB アクセスの仕方 protected function execute($arguments = array(), $options = array()) { $databaseManager = new sfDatabaseManager($this-&gt;configuration); $connection = $databaseManager-&gt;getDatabase(&apos; 接続名 &apos;)-&gt;getConnection(); $member = Doctrine::getTable(&apos;Member&apos;)-&gt;find(1); $this-&gt;log($menber-&gt;getName()); }
  • 12. Web アプリリソースへのアクセス方法 コンフィグ& ルーティング ------------------------- protected function configure() { $this-&gt;addOptions(array( new sfCommandOption(&apos;application&apos;, null, sfCommandOption::PARAMETER_REQUIRED, &apos; アプリ名 &apos;), new sfCommandOption(&apos;env&apos;, null, sfCommandOption::PARAMETER_REQUIRED, &apos; 環境名 &apos;, &apos;dev&apos;), )); } $this-&gt;log(sfConfig::get(&apos;app_name&apos;)); $ symfony myapp:sample --application=frontend --env=dev ------------------------- $routing = $this-&gt;getRouting(); $this-&gt;log($routing-&gt;generate(&apos;homepage&apos;)); $this-&gt;log($routing-&gt;generate(&apos;default&apos;, array(&apos;module&apos; =&gt; &apos;Login&apos;, &apos;action&apos; =&gt; &apos;login&apos;))); $ symfony myapp:sample --application=frontend --env=prod / /Login/login
  • 13. その他 こんなのもあります。 ◆ メール送信 $this-&gt;getMailer() project:send-emails タスク ◆ 入力 $this-&gt;ask() $this-&gt;askConfirmation() $this-&gt;askAndValidate() ◆ ファイル操作 sfFilesystem ◆ タスクの起動 $this-&gt;runTask()

×