Php 致命错误:调用null上的成员函数test()

Php 致命错误:调用null上的成员函数test(),php,oop,Php,Oop,当我运行这个php文件时,我得到了一个错误:致命错误:调用null上的成员函数测试,可能是什么问题?谢谢 conn不返回任何内容,因此$db从未设置为任何内容。也许你是故意的 <?php class database{ private static $instance; public function __construct() { } static public function newinstance() {

当我运行这个php文件时,我得到了一个错误:致命错误:调用null上的成员函数测试,可能是什么问题?谢谢

conn不返回任何内容,因此$db从未设置为任何内容。也许你是故意的

<?php
class database{
    private static $instance;
    public function __construct()
    {       
    }   
    static public function newinstance()
    {

        if(!self::$instance)
        {
            self::$instance = new self();
        }
        return self::$instance;
    }
    public function conn()
    {
    mysql_connect('localhost','root','') or die("database connection error".mysql_error());
    mysql_select_db('user') or die("cannot select db".mysql_error());

    }
    public function test()
    {
        echo "Public function test";
    }

}
$db=database::newinstance()->conn();
$db->test();

?>
conn方法不返回任何内容,您已将其分配给$db。尝试:

$db=database::newinstance();
$db->conn();
$db->test();
或者,您可以在conn方法中返回$this并使用您的语法:

$db = database::newinstance();
$db->conn();
$db->test();
试试这个

public function conn()
{
  mysql_connect('localhost','root','') or die("database connection error".mysql_error());
  mysql_select_db('user') or die("cannot select db".mysql_error());
  return $this;
}

因为与数据库的连接失败,$db=database::newinstance->conn;返回null..1。您仅为一个函数创建了实例,因此无法调用另一个函数。2当您能够以任何方式调用另一个函数时,您将收到弃用版本警告,因为它们已从PHP78 k中删除,并且不会告诉您不要使用弃用版本的mysql。wow@AlivetoDie糟糕的一天,嗯?
<?php
    class database{
        private static $instance;
        public function __construct()
        {       
        }   
        static public function newinstance()
        {

            if(!self::$instance)
            {
                self::$instance = new self();
            }
            return self::$instance;
        }
        public function conn()
        {
        mysql_connect('localhost','root','') or die("database connection error".mysql_error());
        mysql_select_db('user') or die("cannot select db".mysql_error());

        }
        public function test()
        {
            echo "Public function test";
        }

    }
    $db=database::newinstance();
    $db->conn();
    $db->test();

    ?>