<?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();
?>
When i rung this php file i got this error:Fatal error: Call to a member function test() on null , what could be the problem?Thank you!
conn()
method returns nothing, which you have assigned to $db
. Try with:
$db = database::newinstance();
$db->conn();
$db->test();
or you can return $this
in conn()
method and use your syntax:
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;
}
conn()
doesn't return anything, so $db
is never set to anything. Maybe you meant to do this?:
$db=database::newinstance();
$db->conn();
$db->test();
try this ...
<?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();
?>