Trình tạo lớp PHP của tôi dường như không được gọi khi lớp được khởi tạo. Đây là những gì constructor của tôi trông giống như:Trình xây dựng PHP không được gọi khi khởi tạo
public function __contruct()
{
$GLOBALS['page_content'] .= "<p>Constructor entered.</p>\r\n";
try
{
$this->ConstructorBase();
}
catch (Exception $e)
{
throw new Exception(
"Error in ".__FILE__."(".__LINE__."): Constructor failed.",
CLoginError::ERROR_CANNOT_INSTANTIATE, $e);
}
}
Sau đó trong cùng một tập tin, trong phạm vi toàn cầu, tôi cố gắng để nhanh chóng lớp:
$Login = new CLogin();
Tuy nhiên, khi tôi kiểm tra $GLOBALS['page_content']
, sau khi instantiating class, nó trống rỗng, như thể constructor chưa bao giờ được gọi. Điều kỳ lạ là tôi có thể gọi các hàm thành viên công cộng. Nếu bạn muốn nhìn thấy nó, nguồn đầy đủ được đăng ở đây:
một lỗi đánh máy bạn đã có;) – Jakub
Ngoài ra TOÀN CẦU và ngoại lệ trong các nhà xây dựng là thực hành xấu – meze
Ngoại lệ không phải là thực hành xấu ở tất cả trong các nhà xây dựng, nó thực sự được đề nghị trong mọi trường hợp để trigger_error và là cơ chế hợp lệ duy nhất để bắt lỗi xảy ra khi tạo đối tượng. Tôi đồng ý mặc dù trên GLOBALS, không sử dụng GLOBALS bất cứ nơi nào ... thực hành xấu xấu xấu. –