不应静态调用非静态方法DB::connect()


Non-static method DB::connect() should not be called statically

最近将我们的服务器升级到5.4,并开始获得以下错误

Non-static method DB::connect() should not be called statically

我对此进行了研究;向下,提出的每一个解决方案都没有奏效。我尝试过在文件级别、目录级别和服务器级别关闭严格的错误报告。浏览器中出现的实际错误是:

DB Error: connect failed module: /path/to/login_class.php line: 49

EDIT:发布lib_app.php:的完整代码

<?php
/*--------------------------------------------------------------------------
 $RCSfile: lib_app.php,v $ 
 Purpose:   Defines App class. This class is a container for 
            application global variables such as database 
            connection.
 Copyright: 2003 ** Author Omitted **
---------------------------------------------------------------------------
    Functions:
    - none
    Classes:
        App - global application class, holds global variables  
---------------------------------------------------------------------------         
 $Log: lib_app.php,v $
 Revision 1.1.1.1  2004/08/05 23:50:39 ** Author Omitted **

--------------------------------------------------------------------------*/
if (!defined('PHP_APP')) 
    die('<br>'.__FILE__.': This program cannot function without application framework<br>');

class App{
    var $dsn;                           // db connection string
    var $db;                            // db connection object
    var $state;                         // application status
    var $debug =  CONFIG_DEBUG;         // debug status
    function App($dsn){
        $this->dsn  = $dsn;
        $this->db   = DB::connect($dsn);
        if (DB::isError($this->db)) {
            die($this->db->getMessage() . ' module: ' . __FILE__ . ' line: ' .  __LINE__ );
        }
    }   
} // class
?>

请问,有人解决了这个问题,能够提供帮助吗?我引用了许多其他网站,包括Stack上的一个数字。纳达。

呼吁:我们很清楚,对于那些要求我"学习PDO"或"埋葬这件遗物并在上面放些盐"的仇恨者,尽管他们很搞笑,也很感激,但请注意,这不是我的代码。事实上,这是一个可能应该被埋葬的遗迹。然而,这是一个后端客户管理程序,它"附带"了一位客户,我们为他设计并编码了许多前端内容,他特别要求不要触碰管理区域。如果我没有得到报酬,我不会重写整个该死的事情,但我非常想为更多的人解决这个问题:

http://pear.php.net/bugs/bug.php?id=12057

http://forums.devshed.com/php-development-5/non-static-method-db-connect-should-not-be-called-statically-462291.html

http://php.brickhost.com/forums/index.php?topic=10756.0

错误消息严格标准:php 中不应静态调用非静态方法

http://forums.phpfreaks.com/topic/265563-help-me-non-static-method-db/

http://forums.codewalkers.com/pear-packages-47/non-static-method-warnings-php-5t-4796.html

对于更多的人来说,他们对此没有得到任何答案,这将与这种特殊情况有关,他们对自己过时的代码的指责和鞭策比其他任何事情都多。

让我把它放在你身上。我已经降级回PHP 5.3,所以错误不再出现。一切都很好。但是,对于这个问题,需要有一些答案,这些答案在所有的嘲笑和指责中都被遗漏了,快速的"啊…关闭错误报告"(这不起作用),以及关于声明为非静态变量(derr)的非特异性评论。没有$@@#!伙计们。如果事情这么简单,我甚至不会在Stack上发布这个。

为了我自己的利益?不再是了。但事实是,会有很多人在寻找答案,但在其他地方找不到答案。我希望这里有人能找到解决办法。如果没有,相信我,我不会为此失眠。

对不起,伙计,

但珀尔,它已经过时了,或者他的继任者是MDB2,考虑升级到类似PDO的

有关详细信息。。。PDO