in PHP

Using Static Methods In PHP

A static method allows us to use the method without creating the object first. This means that we can use the scope resolution operator :: to use the method. Static methods can not be accessed by using the normal arrow -> on classes.


class new_class
{
     //New static method
     public static new_method(){

     }
}

To access the new_method() we need to use the :: operator.


   new_class::new_method();

If we try using it the normal way it will throw an error.


$newClass = new new_class();
$newClass->new_method();

You can use the :: operator to access non-static methods will throw a E_STRICT level warning. As static methods can't be accessed from the a created object we can not use the $this variable to access the method inside the class, instead you need to use self::new_method.


<?php
class Foo
{
    public static $my_static = 'foo';

    public function staticValue() {
        return self::$my_static;
    }
}

class Bar extends Foo
{
    public function fooStatic() {
        return parent::$my_static;
    }
}
?>

When To Use Static Methods

When to use a static method is entirely up to you, but I tend to use them when I have no business logic to put in the method and their main functionality will be to output a piece of code or a variable. Static method can be up to 33% faster than normal methods, so if they don't need any business logic these are perfect for outputting data.


class static_method_class
{
     public static output_header_tag(){
          echo '<head>';
     }

     public static output_end _header_tag(){
          echo '</head>';
     }

     public static output_body_tag(){
          echo '<body>';
     }

     public static output_end_body_tag(){
          echo '</body>';
     }
}

$static_method_class::output_header_tag() //Output <head>
$static_method_class::output_end_header_tag() //Output </head>
$static_method_class::output_body_tag() //Output <body>
$static_method_class::output_end_body_tag() //Output </body>

Upgrade to access all content on Paulund

Members unlock all tutorials and snippets

Access to all downloadable content

Access to code examples before others

Sign Up Now

Already a member? Login here

Subscribe To The Weekly Newsletter

Get weekly updates to your email