PHP static objects giving a fatal error

Posted by Webbo on Stack Overflow See other posts from Stack Overflow or by Webbo
Published on 2010-05-05T13:40:28Z Indexed on 2010/05/05 15:08 UTC
Read the original article Hit count: 306

Filed under:
|
|
|
|

I have the following PHP code;

<?php

component_customer_init();
component_customer_go();


function component_customer_init()
{
    $customer = Customer::getInstance();
    $customer->set(1);
}
function component_customer_go()
{
    $customer = Customer::getInstance();
    $customer->get();
}

class Customer
{
    public $id;
    static $class = false;
    static function getInstance()
    {
        if(self::$class == false)
        {
                self::$class = new Customer;
        }
        else
        {
                return self::$class;
        }
    }


    public function set($id)
    {
        $this->id = $id;
    }

    public function get()
    {
        print $this->id;
    }

}
?>

I get the following error;

Fatal error: Call to a member function set() on a non-object in ....../classes/customer.php on line 9

Can anyone tell me why I get this error? I know this code might look strange, but it's based on a component system that I'm writing for a CMS. The aim is to be able to replace HTML tags in the template e.g.;

<!-- component:customer-login -->

with;

<?php component_customer_login(); ?>

I also need to call pre-render methods of the "Customer" class to validate forms before output is made etc.

If anyone can think of a better way, please let me know but in the first instance, I'd like to know why I get the "Fatal error" mentioned above.

Cheers

© Stack Overflow or respective owner

Related posts about php

Related posts about php5