Php 致命错误:调用null上的成员函数test()
当我运行这个php文件时,我得到了一个错误:致命错误:调用null上的成员函数测试,可能是什么问题?谢谢 conn不返回任何内容,因此$db从未设置为任何内容。也许你是故意的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
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();
?>