Có thể kiểm tra xem một phương thức đã bị ghi đè bởi lớp con trong PHP không?kiểm tra php nếu phương thức được ghi đè trong lớp con
<!-- language: lang-php -->
class foo {
protected $url;
protected $name;
protected $id;
var $baz;
function __construct($name, $id, $url) {
$this->name = $name;
$this->id = $id;
$this->url = $url;
}
function createTable($data) {
// do default actions
}
}
lớp Child:
class bar extends foo {
public $goo;
public function createTable($data) {
// different code here
}
}
Khi lặp lại qua một mảng của các đối tượng được định nghĩa là các thành viên của lớp này, làm sao tôi có thể kiểm tra các đối tượng có phương pháp mới như trái ngược với cái cũ? Có chức năng như method_overridden(mixed $object, string $method name)
không?
foreach ($objects as $ob) {
if (method_overridden($ob, "createTable")) {
// stuff that should only happen if this method is overridden
}
$ob->createTable($dataset);
}
Tôi nhận thức được template method pattern, nhưng chúng ta hãy nói rằng tôi muốn sự kiểm soát của chương trình để được tách biệt khỏi lớp và các phương pháp tự. Tôi sẽ cần một chức năng như method_overridden
để thực hiện việc này.
quá tải, hoặc ghi đè? Tôi nghĩ rằng PHP không có phương pháp quá tải –
Tôi đã có nghĩa là over-ridden, có – Joey
Bạn có thể thử điều này: http://www.php.net/manual/en/reflectionclass.hasmethod.php –