为什么可以直接访问非静态函数?

time_is_life 2016-06-04 09:28:13
今天看Discuz的代码,看到如下的代码:


class DB
{

function table($table) {
return DB::_execute('table_name', $table);
}


function _execute($cmd , $arg1 = '', $arg2 = '') {
static $db;
if(empty($db)) $db = & DB::object();
$res = $db->$cmd($arg1, $arg2);
return $res;
}

}



弄不懂的是,_execute方法不是静态方法,为什么可以直接用DB::_execute执行那?
而我自己写的类里面,必须要把方法设置成static才可以直接通过 类名::方法名 的方式访问那?
请指教,谢谢。

...全文
60 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
果酱很好吃 2016-06-04
  • 打赏
  • 举报
回复
并没有这个DB 类 只有在 \source\class\class_core.php 的最后一行 class DB extends discuz_database {} 不知道你的版本是多少
xuzuning 2016-06-04
  • 打赏
  • 举报
回复
检错的级别不同而已
class T {
  function foo($s) {
    echo $s, PHP_EOL;
  }
}
T::foo(123);

error_reporting(E_ALL ^ E_STRICT);
T::foo('abc');

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧