From 9ae554bd495233e8fc0ee223ad0248b44ffc7a4e Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sun, 25 Aug 2024 20:37:36 +0200 Subject: [PATCH] Declare called methods in interfaces The obvious advantage is that implementers of these interface know what they need to implement. The obvious downside is that this might break existing code outside this repository. --- lib/php/libsdk/SDK/Build/PGO/Interfaces/PHP.php | 2 ++ lib/php/libsdk/SDK/Build/PGO/Interfaces/TrainingCase.php | 6 +++++- pgo/cases/drupal/TrainingCaseHandler.php | 4 ++-- pgo/cases/joomla/TrainingCaseHandler.php | 4 ++-- pgo/cases/mediawiki/TrainingCaseHandler.php | 4 ++-- pgo/cases/pgo01org/TrainingCaseHandler.php | 4 ++-- pgo/cases/symfony_demo/TrainingCaseHandler.php | 4 ++-- pgo/cases/symfony_demo_pdo_mysql/TrainingCaseHandler.php | 4 ++-- pgo/cases/wordpress/TrainingCaseHandler.php | 4 ++-- 9 files changed, 21 insertions(+), 15 deletions(-) diff --git a/lib/php/libsdk/SDK/Build/PGO/Interfaces/PHP.php b/lib/php/libsdk/SDK/Build/PGO/Interfaces/PHP.php index 71da2bc..07e2308 100644 --- a/lib/php/libsdk/SDK/Build/PGO/Interfaces/PHP.php +++ b/lib/php/libsdk/SDK/Build/PGO/Interfaces/PHP.php @@ -13,4 +13,6 @@ public function up() : void; public function down(bool $force = false) : void; public function getVersion(bool $short = false) : string; public function getExeFilename() : string; + public function getRootDir() : string; + public function getExtRootDir() : string; } diff --git a/lib/php/libsdk/SDK/Build/PGO/Interfaces/TrainingCase.php b/lib/php/libsdk/SDK/Build/PGO/Interfaces/TrainingCase.php index 1137482..801204f 100644 --- a/lib/php/libsdk/SDK/Build/PGO/Interfaces/TrainingCase.php +++ b/lib/php/libsdk/SDK/Build/PGO/Interfaces/TrainingCase.php @@ -8,7 +8,7 @@ interface TrainingCase { - public function __construct(PGOConfig $conf, ?Server $srv_http, ?Server\DB $srv_db); + public function __construct(PGOConfig $conf, ?Server\HTTP $srv_http, ?Server\DB $srv_db); /* Name of the training case, usually should be same as dirname and namespace. */ public function getName() : string; @@ -24,4 +24,8 @@ public function run() : void; /* Get training type, it's like "web", "cli", etc.*/ public function getType() : string; + + public function getJobFilename() : string; + + public function httpStatusOk(int $status) : bool; } diff --git a/pgo/cases/drupal/TrainingCaseHandler.php b/pgo/cases/drupal/TrainingCaseHandler.php index d5d5fda..82903f4 100644 --- a/pgo/cases/drupal/TrainingCaseHandler.php +++ b/pgo/cases/drupal/TrainingCaseHandler.php @@ -14,7 +14,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var string */ protected $base; - /** @var ?Interfaces\Server $nginx */ + /** @var ?Interfaces\Server\HTTP $nginx */ protected $nginx; /** @var mixed */ @@ -23,7 +23,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var int */ protected $max_runs = 8; - public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $maria) + public function __construct(Config $conf, ?Interfaces\Server\HTTP $nginx, ?Interfaces\Server\DB $maria) { if (!$nginx) { throw new Exception("Invalid NGINX object"); diff --git a/pgo/cases/joomla/TrainingCaseHandler.php b/pgo/cases/joomla/TrainingCaseHandler.php index cbda00e..d8b65a7 100644 --- a/pgo/cases/joomla/TrainingCaseHandler.php +++ b/pgo/cases/joomla/TrainingCaseHandler.php @@ -14,7 +14,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var string */ protected $base; - /** @var ?Interfaces\Server $nginx */ + /** @var ?Interfaces\Server\HTTP $nginx */ protected $nginx; /** @var mixed */ @@ -26,7 +26,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var int */ protected $max_runs = 4; - public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $maria) + public function __construct(Config $conf, ?Interfaces\Server\HTTP $nginx, ?Interfaces\Server\DB $maria) { if (!$nginx) { throw new Exception("Invalid NGINX object"); diff --git a/pgo/cases/mediawiki/TrainingCaseHandler.php b/pgo/cases/mediawiki/TrainingCaseHandler.php index 375b4d7..aea0cf1 100644 --- a/pgo/cases/mediawiki/TrainingCaseHandler.php +++ b/pgo/cases/mediawiki/TrainingCaseHandler.php @@ -14,7 +14,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var string */ protected $base; - /** @var ?Interfaces\Server $nginx */ + /** @var ?Interfaces\Server\HTTP $nginx */ protected $nginx; /** @var mixed */ @@ -23,7 +23,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var int */ protected $max_runs = 4; - public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $srv_db) + public function __construct(Config $conf, ?Interfaces\Server\HTTP $nginx, ?Interfaces\Server\DB $srv_db) { if (!$nginx) { throw new Exception("Invalid NGINX object"); diff --git a/pgo/cases/pgo01org/TrainingCaseHandler.php b/pgo/cases/pgo01org/TrainingCaseHandler.php index b4372d0..4802fd1 100644 --- a/pgo/cases/pgo01org/TrainingCaseHandler.php +++ b/pgo/cases/pgo01org/TrainingCaseHandler.php @@ -14,7 +14,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var string */ protected $base; - /** @var ?Interfaces\Server $nginx */ + /** @var ?Interfaces\Server\HTTP $nginx */ protected $nginx; /** @var ?Interfaces\Server\DB */ @@ -26,7 +26,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var int */ protected $max_runs = 12; - public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $maria) + public function __construct(Config $conf, ?Interfaces\Server\HTTP $nginx, ?Interfaces\Server\DB $maria) { if (!$nginx) { throw new Exception("Invalid NGINX object"); diff --git a/pgo/cases/symfony_demo/TrainingCaseHandler.php b/pgo/cases/symfony_demo/TrainingCaseHandler.php index 9259378..02247c8 100644 --- a/pgo/cases/symfony_demo/TrainingCaseHandler.php +++ b/pgo/cases/symfony_demo/TrainingCaseHandler.php @@ -14,7 +14,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var string */ protected $base; - /** @var ?Interfaces\Server $nginx */ + /** @var ?Interfaces\Server\HTTP $nginx */ protected $nginx; /** @var mixed */ @@ -23,7 +23,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var int */ protected $max_runs = 4; - public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $srv_db) + public function __construct(Config $conf, ?Interfaces\Server\HTTP $nginx, ?Interfaces\Server\DB $srv_db) { if (!$nginx) { throw new Exception("Invalid NGINX object"); diff --git a/pgo/cases/symfony_demo_pdo_mysql/TrainingCaseHandler.php b/pgo/cases/symfony_demo_pdo_mysql/TrainingCaseHandler.php index f0d8bee..2b3edf3 100644 --- a/pgo/cases/symfony_demo_pdo_mysql/TrainingCaseHandler.php +++ b/pgo/cases/symfony_demo_pdo_mysql/TrainingCaseHandler.php @@ -14,7 +14,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var string */ protected $base; - /** @var ?Interfaces\Server $nginx */ + /** @var ?Interfaces\Server\HTTP $nginx */ protected $nginx; /** @var ?Interfaces\Server\DB */ @@ -26,7 +26,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var int */ protected $max_runs = 4; - public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $srv_db) + public function __construct(Config $conf, ?Interfaces\Server\HTTP $nginx, ?Interfaces\Server\DB $srv_db) { if (!$nginx) { throw new Exception("Invalid NGINX object"); diff --git a/pgo/cases/wordpress/TrainingCaseHandler.php b/pgo/cases/wordpress/TrainingCaseHandler.php index f15fc3e..4d8c669 100644 --- a/pgo/cases/wordpress/TrainingCaseHandler.php +++ b/pgo/cases/wordpress/TrainingCaseHandler.php @@ -14,7 +14,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var string */ protected $base; - /** @var ?Interfaces\Server $nginx */ + /** @var ?Interfaces\Server\HTTP $nginx */ protected $nginx; /** @var ?Interfaces\Server\DB */ @@ -26,7 +26,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T /** @var int */ protected $max_runs = 4; - public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $maria) + public function __construct(Config $conf, ?Interfaces\Server\HTTP $nginx, ?Interfaces\Server\DB $maria) { if (!$nginx) { throw new Exception("Invalid NGINX object");