PHP面向对象访问方法和$ this的问题

时间:2013-08-11 14:41:27

标签: php

我已经和Yii框架合作了一段时间,但我知道我正在努力研究基于MVC架构的我自己的简约框架。 我们只是说我有一个父模型 ModelCore ,它扩展了所有其他模型(也提到了PageModel)。它定义了方法:

public function find( $condition ){
    $sql = "SELECT * FROM {$this->table()} WHERE {$condition} LIMIT 1";
    // executing query and returning the result
}

当我想以这种方式从其他类( URLresolver )调用此方法时,我陷入困境:

//...
elseif ( PageModel::find("`url` = '{$bit}'") != NULL ) {
//...

脚本以致命错误结束:调用未定义的方法URLresolver :: table()

如果有人能够解释我在PHP中如何使用这些东西,我怎么能轻松访问一种方法呢?我很感激。

非常感谢。

3 个答案:

答案 0 :(得分:1)

如果您使用::,则它指的是静态函数。如果您创建了一个对象,则必须执行以下操作:

$obj = new PageModel( );
$obj->find(" YOUR QUERY ");

public function find( $q ){ }

如果你有一个静态方法(在这些函数中,$这不会对对象产生任何影响,因为你没有创建一个new对象。

PageModel::find( $q ){}

public static function find ( $q ){ }

答案 1 :(得分:0)

脚本以致命错误结束:调用未定义的方法URLresolver::table()

找到你在哪里调用似乎不存在的table()函数,并且......它是static方法吗?相反,您不需要::表示法,而是->

答案 2 :(得分:0)

错误非常明显:URLresolver类没有实现(或继承)名为table的方法。您确定不打算使用该名称调用属性吗?