Tôi đang tìm kiếm một cách để gọi một constructor lớp cha tự động một cách kỳ diệu từ một lớp con (?):Làm thế nào để tự động chạy xây dựng trong lớp cha mẹ mà không gọi từ lớp con
(Lưu ý: Đây chỉ là một ví dụ, vì vậy các lỗi đánh máy có thể có mặt)
Class myParent()
{
protected $html;
function __construct($args)
{
$this->html = $this->set_html($args);
}
protected function set_html($args)
{
if ($args['foo'] === 'bar')
$args['foo'] = 'foobar';
return $args;
}
}
Class myChild extends myParent
{
public function do_stuff($args)
{
return $this->html;
}
}
Class myInit
{
public function __construct($args)
{
$this->get_stuff($args);
}
public function get_stuff($args)
{
$my_child = new myChild();
print_r($my_child->do_stuff($args));
}
}
$args = array('foo' => 'bar, 'what' => 'ever');
new myInit($args);
// Should Output:
/* Array('foo' => 'foobar', 'what' => 'ever') */
Những gì tôi muốn tránh được phải gọi điện (bên trong lớp myChild) __construct($args) { parent::__construct($args); }
.
Câu hỏi: Điều này có khả thi không? Nếu vậy: Làm thế nào?
Cảm ơn!
Tại sao bạn phản đối việc gọi 'parent :: __ construct()'? – cspray
Tôi cũng muốn PHP viết ứng dụng của mình một cách kỳ diệu. –
@Wesley van Opdorp Vui lòng xem giải pháp. Làm việc cho tôi. @Charles Sprayberry Tôi có một lớp cơ sở được mở rộng bởi một số lớp không xác định và do đó tôi phải chạy một thủ tục tiêu chuẩn cho tất cả các đối số đầu vào (như thả đầu vào không hợp lệ, mặc định phân tích, v.v.) – kaiser