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

WBOY
Lepaskan: 2016-06-20 12:26:28
asal
900 orang telah melayarinya

今天看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;	}}
Salin selepas log masuk


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


回复讨论(解决方案)

检错的级别不同而已

class T {  function foo($s) {    echo $s, PHP_EOL;  }}T::foo(123);error_reporting(E_ALL ^ E_STRICT);T::foo('abc');
Salin selepas log masuk

并没有这个DB 类
只有在 \source\class\class_core.php 的最后一行
class DB extends discuz_database {}

不知道你的版本是多少

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan