Home  >  Article  >  Backend Development  >  PHP中的一个DB类中的成员方法为什么 可以 当作静态方法使用!求指点?

PHP中的一个DB类中的成员方法为什么 可以 当作静态方法使用!求指点?

WBOY
WBOYOriginal
2016-06-23 14:02:02946browse

php class object

这是一个db.php文件,里面是一个DB类
class DB{    function &object()    {        static $db;        if (empty($db))        {            $db = new pgsql();        }        return $db;    }    function query($sql, $transaction = false)    {        $db = & DB::object();                return $db->query($sql, $transaction);    }}


我想问的是 DB类中的方法 都不是静态的(static), 为什么 在外部PHP文件中 可以像DB::query() 这样使用,还有 他本身 内部 这样使用的 DB::object(), 我很奇怪 为什么? 不是 静态的 方法 才这样用的吗??

求 大神  指点一二!! 先在此谢过了!

回复讨论(解决方案)

这是 php4 的代码
php4 没有那么多约束

这是 php4 的代码
php4 没有那么多约束

这是 php4 的代码
php4 没有那么多约束

这是 php4 的代码
php4 没有那么多约束

我的 PHP环境 是5.2以上的, 它是也支持 PHP4 的代码吗??

php5 是可以有条件接受 php4 的

php 5.2 基本与 php4 一致,除了对象总是以引用传递,即无需使用用声明 &
php 5.3 打开 E_STRICT 级别错误检查时,不能以静态方式使用非静态方法
php 5.4 默认打开 E_STRICT 级别错误检查,不能以静态方式使用非静态方法

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn