PHP面向对象访问方法和$this问题
我使用Yii框架已经有一段时间了,但我知道我正在尝试基于MVC架构开发自己的简约框架。 假设我有一个父模型ModelCore,它扩展了所有其他模型(也提到了PageModel)。它定义了一种方法:PHP面向对象访问方法和$this问题,php,Php,我使用Yii框架已经有一段时间了,但我知道我正在尝试基于MVC架构开发自己的简约框架。 假设我有一个父模型ModelCore,它扩展了所有其他模型(也提到了PageModel)。它定义了一种方法: public function find( $condition ){ $sql = "SELECT * FROM {$this->table()} WHERE {$condition} LIMIT 1"; // executing query and returning the
public function find( $condition ){
$sql = "SELECT * FROM {$this->table()} WHERE {$condition} LIMIT 1";
// executing query and returning the result
}
当我想用这种方式从其他类(urlsolver)调用此方法时,我陷入了困境:
//...
elseif ( PageModel::find("`url` = '{$bit}'") != NULL ) {
//...
脚本以致命错误结束:调用未定义的方法URLresolver::table() 如果有人能向我解释这些东西是如何在PHP中工作的,以及我如何能够轻松访问一个方法,我将不胜感激
非常感谢 如果您使用
:
它指的是一个静态函数。如果您创建了一个对象,则必须按照以下方式执行:
$obj = new PageModel( );
$obj->find(" YOUR QUERY ");
public function find( $q ){ }
如果您有一个静态方法(在这些函数中,$),则不会引用对象,因为您没有创建新的<代码>对象
PageModel::find( $q ){}
public static function find ( $q ){ }
如果您使用
::
它指的是一个静态函数。如果您创建了一个对象,您必须像这样做:
$obj = new PageModel( );
$obj->find(" YOUR QUERY ");
public function find( $q ){ }
如果您有一个静态方法(在这些函数中,$),则不会引用对象,因为您没有创建新的<代码>对象
PageModel::find( $q ){}
public static function find ( $q ){ }
脚本以致命错误结束:调用未定义的方法
URLresolver::table()
查找调用似乎不存在的
table()
函数的位置,以及…这是一个静态方法吗?否则,您不需要:
符号,但是->
脚本以致命错误结束:调用未定义的方法URLSolver::table()
查找调用似乎不存在的table()
函数的位置,以及…这是一个静态
方法吗?否则,您不需要:
符号,但是->
错误是不言自明的:URLresolver
类不实现(或继承)一个名为table
的方法。您确定不是要用该名称调用属性吗?这个错误是不言自明的:URLresolver
类没有实现(或继承)一个名为table
的方法。你确定不是要用这个名称调用属性吗?非常有用。我不知道::引用静态函数。我将尝试用其他方式处理它。谢谢。非常有用。我不知道::引用静态函数。我将尝试用其他方式处理它。谢谢。