define('anActionType', 1);
$actionTypes = array(anActionType => 'anActionType');
class core {
public $callbacks = array();
public $plugins = array();
public function __construct() {
$this->plugins[] = new admin();
$this->plugins[] = new client();
}
}
abstract class plugin {
public function registerCallback($callbackMethod, $onAction) {
if (!isset($this->callbacks[$onAction]))
$this->callbacks[$onAction] = array();
global $actionTypes;
echo "Calling $callbackMethod in $callbacksClass because we got {$actionTypes[$onAction]}" . PHP_EOL;
// How do I get $callbacksClass?
$this->callbacks[$onAction][] = $callbackMethod;
}
}
class admin extends plugin {
public function __construct() {
$this->registerCallback('onTiny', anActionType);
}
public function onTiny() { echo 'tinyAdmin'; }
}
class client extends plugin {
public function __construct() {
$this->registerCallback('onTiny', anActionType);
}
public function onTiny() { echo 'tinyClient'; }
}
$o = new core();
$callbacksClass
phải là quản trị viên hoặc khách hàng. Hay tôi đang thiếu điểm ở đây hoàn toàn và nên đi theo cách này? Cần lưu ý rằng tôi sẽ chỉ chấp nhận một câu trả lời mà không yêu cầu tôi gửi tên lớp như một đối số cho phương thức registerCallback.Cách lấy tên của lớp gọi điện thoại (bằng PHP)
Erm, cả hai phương pháp đều là phương pháp thể hiện (không phải là thống kê), vì vậy nếu bạn thực sự cần tên lớp cho một mục đích khác sau đó chỉ lặp lại nó (tức là gọi lại gọi lại), bạn phải cung cấp một cá thể thay vì một tên lớp có thể là ... – Wrikken