据我所知,你可以实例化这个类:
$class = new className();
然后在其中使用方法:
$class->myMethod();
或者如果你想在类中使用某些内容而不实例化它,你可以这样做:
className::myMethod();
我确定我以前使用过后者而没有任何问题,但是为什么我会收到错误消息:
Fatal error: Using $this when not in object context
我用来调用它的代码是:
// Display lists with error message
manageLists::displayLists($e->getMessage());
课程如下..
class manageLists {
/* Constructor */
function __construct() {
$this->db_connection = connect_to_db('main');
}
function displayLists($etext = false, $success = false) {
// Get list data from database
$lists = $this->getLists();
......
}
function getLists() {
.........
}
}
我从这一行得到了这个错误..
$lists = $this->getLists();
答案 0 :(得分:2)
// Display lists with error message
manageLists::displayLists($e->getMessage());
如果从类的另一个实例方法中调用,这只是调用实例方法的有效方法。否则,对displayLists
的调用将是静态的,并且不会有$this
引用。如果您有足够高的错误报告,您应该会看到一条警告,告诉您正在静态调用实例方法。
答案 1 :(得分:2)
当您使用格式ClassName::methodName()
时,您正在调用方法'静态',这意味着您直接在类定义上调用方法,而不是在类的实例上调用。由于您无法从实例调用静态方法,并且$this
表示类的实例,因此会出现致命错误。
答案 2 :(得分:0)
如果您静态调用方法,则$this
不存在。而不是:
$lists = $this->getLists();
你可以这样做:
$lists = self::getLists();
self
的更多信息可在此处找到:When to use self over $this?