創建一個shell

讓我們創建一個shell使用控制檯。對於這個示例,我們將創建一個簡單的Hello world殼。在您的應用程序目錄創建HelloShell.php控制檯/命令。把下面的代碼裏面:

class HelloShell extends AppShell {
    public function main() {
        $this->out('Hello world.');
    }
}

約定殼類,類名應該匹配文件名,後綴的外殼。在我們的外殼我們創建了一個main()方法。調用此方法調用shell時,沒有額外的命令。我們將添加更多的命令,但是現在讓我們運行我們的外殼。從您的應用程序目錄,運行:
Console/cake hello
您應該看到如下輸出:
Welcome to CakePHP v2.0.0 Console
---------------------------------------------------------------
App : app
Path: /Users/markstory/Sites/cake_dev/app/
---------------------------------------------------------------
Hello world.

如前所述,main()方法在貝殼是一種特殊的方法調用時沒有其他命令和參數給一個shell。您可能也注意到,HelloShell AppShell延伸。就像應用程序控制器,AppShell給你一個基類來包含所有的常見功能或邏輯。您可以定義一個AppShell,通過創建app /控制檯/命令/ AppShell.php。如果你沒有一個,CakePHP將使用內置的一個。因爲我們的主要方法並不是很有趣的讓我們添加另一個命令是:
class HelloShell extends AppShell {
    public function main() {
        $this->out('Hello world.');
    }

    public function hey_there() {
        $this->out('Hey there ' . $this->args[0]);
    }
}

在保存這個文件你應該能夠運行控制檯/蛋糕你好hey_there your-name打印出來,看看你的名字。任何公共方法沒有一個前綴_可以從命令行調用。在hey_there方法我們也使用$ this - >參數,該屬性包含一個數組的所有位置參數提供給一個命令。您還可以使用開關或期權shell應用程序,這些都是可以在$ this - >參數,但我們將討論這一點。
當使用一個main()方法將無法使用位置參數或參數。這是因爲第一個位置參數或選項解釋爲命令名。如果您想要使用參數和選項,您應該使用主要以外的方法名。在你的shells使用模型
你會經常需要訪問您的應用程序的業務邏輯在shell工具;CakePHP,超級簡單。通過設置使用美元財產,您可以定義一個數組的模型你想訪問您的shell。定義模型加載屬性附加到您的shell,就像一個控制器模型連接:
class UserShell extends AppShell {
    public $uses = array('User');

    public function show() {
        $user = $this->User->findByUsername($this->args[0]);
        $this->out(print_r($user, true));
    }
}

上面的shell,將獲取一個用戶的用戶名和顯示的信息存儲在數據庫中。
發佈了64 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章