【发布时间】:2012-02-02 18:10:27
【问题描述】:
在启动类时,我的 PHP 类构造函数似乎没有被调用。这是我的构造函数的样子:
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 );
}
}
稍后在同一个文件中,在全局范围内,我尝试实例化该类:
$Login = new CLogin();
但是,当我检查$GLOBALS['page_content'] 时,在实例化该类之后,它是空的,就好像从未调用过构造函数一样。奇怪的是我可以调用公共成员函数。如果你想看,完整的源代码在这里发布:
【问题讨论】:
-
构造函数中的 GLOBALS 和异常也是不好的做法
-
异常在构造函数中根本不是坏习惯,实际上在任何情况下都建议使用 trigger_error 并且是捕获创建对象时发生的错误的唯一有效机制。我同意虽然在 GLOBALS 上,但不要在任何地方使用 GLOBALS……不好的坏习惯。
-
构造函数通常应该只有变量声明。剩下的就看方法了。
-
我使用 GLOBALS 只是为了调试目的,因为我需要知道它是否正在进入构造函数而不破坏其他任何东西。感谢大家的帮助!
-
旁注:阅读“SQL 注入”和“准备好的语句”。
标签: php oop constructor