2018年10月1日 星期一

Java Develop Coder 開始 PHP Test Coder 的生活_2018/10/1 Day22

在進入控制遊戲之前,先記錄一下 monolog。

👉 PHP 的 Logger 框架 Monolog

在專案內建立 Logger 類別,用來取得 logger 並設定。建好類別之後引用執行報錯,[Error] Class 'Jutai\Robot\Utils\RobotLogger' not found,這...不是用 use 就算 import 進來了嗎? monolog 的套件也是用 use 就可以使用,原因是出在有 composer 的幫忙,處理 autoload,這樣就可以不需要在頁面裡用 use 還要加上 require。
基本的用法是在引入類別後,設定 Log 存放位置與級別,就可以開始使用。

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));

// add records to the log
$log->warning('Foo');
$log->error('Bar');

詳細的使用方法後續再研究。

👉 PHP 語法

🍎解決 use 沒有辦法發現類別問題
namespace 現在當成 Java 的 package 用
use 感覺像 Java 的 import,但是使用自己的類別要再加上 require 或 include (?)
require(reuqire_once) import 的另一半,reuqire_once 會檢查如果有引用過不會再引用,錯誤報 error,不繼續執行
include import 的另一半,錯誤報 warming,程式繼續執行
參考資料
[PHP]include 與 require 的差別
 php中require,include,use的区别
PHP class not found when using namespace

🍎autoload
autoload 在處理引用類別的問題,有 PHP原生的 __autoload()、加強版的 spl_autoload 與 spl_autoload_register 以及使用 composer 依據 PSR-0(2014/10/21宣告棄用)PSR-4 標準來驅動的 autoload。專案裡因為已經使用 composer,所以就採取最後一個解決方案。在 composer.json 加上 autoload 的宣告。

{
    ....
    "autoload": {
        "psr-4": {
            "Jutai\\Robot\\Utils\\": "utils/"
        }
    }
    ....
}

前面是命名空間,後面是對應的資料夾位置,兩個反斜線應該是來逃逸用的。再執行 composer install,就可以直接使用 use 來引用類別。
參考資料
COMPOSER進階原理:PHP命名空間與PSR-0
PHP系列 - Autoload 自動載入
PHP Composer … The Autoloader

👉Selenium 操作 HTML5 canvas

進入遊戲後,要開始操作 canvas,但是由於 codeception 並沒有可以操作 html5 標籤的相關指令,所以只有借用 Selenium 來操作,精確的講,是利用 Facebook 實作 Selenium 的 WebDriver 的套件來操作,而且也不需要另外安裝,它被包含在 codeception 裡。

...
$I->executeInSelenium(function (\Facebook\WebDriver\Remote\RemoteWebDriver $webDriver) {
$element = $webDriver->findElement(\Facebook\WebDriver\WebDriverBy::xpath('//div[@id=\'game\']/canvas'));
$action = $webDriver->action();
$action->moveToElement($element, 1300, 390)->click()->perform();
});
...

程式碼還需要重構,因為需求會是玩一整天的遊戲。而按鈕的位置因為需要利用人工調整,所以也需要用變數替代。
參考資料
Automated Testing of HTML5 Canvas Applications with Selenium WebDriver
请教 Selenium 测试 HTML 5 canvas 问题
【基础7】selenium操作canvas

👉 PHPStorm 快捷鍵

Ctrl+Alt+L → Reformat Code

👉Ubuntu 指令

看 PATH
echo $PATH


沒有留言:

張貼留言