call a static method inside a class?



how do i call a static method from another method inside the same class?



7/12/2014 7:56:06 AM

Accepted Answer

10/30/2013 1:40:19 AM

Let's assume this is your class:

class Test
    private $baz = 1;

    public function foo() { ... }

    public function bar() 
        printf("baz = %d\n", $this->baz);

    public static function staticMethod() { echo "static method\n"; }

From within the foo() method, let's look at the different options:


So that calls staticMethod() as an instance method, right? It does not. This is because the method is declared as public static the interpreter will call it as a static method, so it will work as expected. It could be argued that doing so makes it less obvious from the code that a static method call is taking place.


Since PHP 5.3 you can use $var::method() to mean <class-of-$var>::; this is quite convenient, though the above use-case is still quite unconventional. So that brings us to the most common way of calling a static method:


Now, before you start thinking that the :: is the static call operator, let me give you another example:


This will print baz = 1, which means that $this->bar() and self::bar() do exactly the same thing; that's because :: is just a scope resolution operator. It's there to make parent::, self:: and static:: work and give you access to static variables; how a method is called depends on its signature and how the caller was called.

To see all of this in action, see this output.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow