<?php
cmd($argc , $argv);
//コマンド
function cmd($num,$param){
if($num < 2){
echo "コマンドが入力されていません。\n";
return;
}
commandExec($param);
}
//コマンドの実行
function commandExec($arg)
{
switch($arg[1]){
case "test":
if(count($arg) < 3){ echo "引数が足りていません\n";return;}
$cmd = new TestCommand($arg[2]);
break;
default:
echo "設定されていないコマンドです。\n";
return;
}
$cmd->execute();
}
/***********************
*
* スーパークラス
*
**********************/
abstract class AbstractCommand{
protected $states;
abstract public function execute();
abstract public function toString();
}
/***********************
*
* 子クラス
*
***********************/
class TestCommand extends AbstractCommand
{
private $param;
public function TestCommand($param){
$this->param = $param;
}
public function execute(){
echo $this->param . "\n";
}
public function toString()
{
return "TestCommand";
}
}
これを実行すると。
mr-elephant:php shuzo$ php cmd.php test hoge
hoge
出力されました。上の内容でちょっとつまずいたところは、
class TestCommand extends AbstractCommand
{
private $hoge;
public function TestCommand($param){
$hoge = $param;
}
public function execute(){
echo $hoge . "\n";
}
public function toString()
{
return "TestCommand";
}
}
上のやり方だと出力されず、メンバ変数へのアクセスには必ず$this->hogeを使うとのこと。省略しちゃだめってことですね。
0 件のコメント:
コメントを投稿