A brief analysis of the usage difference between static and non-static methods in PHP and php_php tutorial

Source: Internet
Author: User

A brief analysis of the usage difference between static and non-static methods in PHP


In PHP programming, the Static keyword declares that a property or method is related to a class and not to a particular instance of a class, so that such a property or method is also known as a class property or class method

If the access Control permission allows, you do not have to create the class object and directly use the class name plus two colons "::" Call.

The static keyword can be used to modify variables, methods.

Without instantiation, you can directly access static properties and static methods in the class.

Static properties and methods can only access static properties and methods, and non-static properties and methods cannot be accessed by class. Because static properties and methods are created, there may not be any instances of this class that can be called.

Static property, only one copy in memory, shared for all instances.

Use the self:: keyword to access the static members of the current class.

All instances of a class, a static property in a common class.

That is, even if there are multiple instances in memory, there is only one copy of the static property.

example, set a Counter $count property, set private and static adornments.

This way, the $count property is not directly accessible to the outside world. The results of the program run also see multiple instances using the same static $count property.

<?php  class User {   private static $count = 0;//record the logon status of all users.   Public Function __construct () {self    :: $count = self:: $count + 1;   }   Public Function GetCount () {    return self:: $count;   }   Public Function __destruct () {self    :: $count = self:: $count-1;   }  }  $user 1 = new user ();  $user 2 = new user ();  $user 3 = new user ();  echo "Now here has". $user 1->getcount (). "User";  echo "
"; Unset ($user 3); echo "Now here has". $user 1->getcount (). "User";

Second, the static property is called directly

Static properties can be used directly without instantiation and can be used directly when the class is not created.

How to use:

Class Name:: Static property name

<?php  class Math {public   static $pi = 3.14;  }  Find the area of a garden with a radius of 3.  $r = 3;  echo "radius is the area of the $r is
"; echo Math:: $pi * $r * $R; echo "

"; Here I think 3.14 is not accurate enough, I set it more precisely. math:: $pi = 3.141592653589793; echo "radius is the area of the $r is
"; echo Math:: $pi * $r * $R;

Class is not created, static properties can be used directly. When was the static property created in memory?

No data was found in PHP.

Referring to the concepts in Java, the explanation should also be universal. Static properties and methods that are created when the class is invoked.

Third, static method

Static methods do not require that the class be instantiated to be used directly.

The way to use the class name:: Static method Name

Continue to write this math class for mathematical calculations.

Design a method to figure out the maximum value. Since it is a mathematical operation, there is no need to instantiate this class, if this method can be taken over the convenience of more.

This is just the class designed to demonstrate the static method. The max () function comparison value is provided in PHP.

<?php  class Math {public   static function Max ($num 1, $num 2) {    return $num 1 > $num 2? $num 1: $num 2;   }   }  $a =;  $b =;  echo "Displays the maximum value in $a and $b is";  echo "
"; Echo Math::max ($a, $b); echo "
"; echo "
"; echo "
"; $a =; $b = +; echo "Displays the maximum value in $a and $b is"; echo "
"; Echo Math::max ($a, $b);

How static methods Call static methods

The first example, when a static method calls another static method, uses self:

<?php  //The math class that implements the maximum value comparison.  class Math {public   static function Max ($num 1, $num 2) {    return $num 1 > $num 2? $num 1: $num 2;   }   public static function Max3 ($num 1, $num 2, $num 3) {    $num 1 = Self::max ($num 1, $num 2);    $num 2 = Self::max ($num 2, $num 3);    $num 1 = Self::max ($num 1, $num 2);      return $num 1;   }  }  $a =;  $b =;  $c =;  echo "Displays the maximum value in the $a $b $c is";  echo "
"; Echo math::max3 ($a, $b, $c); ? >

static method call static property

Use self:: Call the static property of this class.

<?php  //  class Circle {public   static $pi = 3.14;   public static function Circleacreage ($r) {    return $r * $r * self:: $pi;   }  }  $r = 3;  echo "Radius $r the area of the circle is". Circle::circleacreage ($R);  

A static method cannot invoke a non-static property. You cannot use Self:: Call a non-static property.

<?php  //This method is the wrong  class Circle {public   $pi = 3.14;   public static function Circleacreage ($r) {    return $r * $r * self::p i;   }  }  $r = 3;  echo "Radius $r the area of the circle is". Circle::circleacreage ($R);  

You cannot also use $this to get the value of a non-static property.

Static method calls a non-static method

In PhP5, a non-static method cannot be called using $this identity in a static method.

<?php//The math class that implements the maximum value comparison.  class Math {public    function max ($num 1, $num 2) {    echo ' bad
"; Return $num 1 > $num 2? $num 1: $num 2; } public static function Max3 ($num 1, $num 2, $num 3) { $num 1 = $this->max ($num 1, $num 2); $num 2 = $this->max ($num 2, $num 3); $num 1 = $this->max ($num 1, $num 2); return $num 1; } } $a =; $b =; $c = 188; echo "Displays the maximum value in the $a $b $c is"; echo "
";

When there is a non-static method in a class that is self: called, the system automatically converts the method to a static method.

<?php  //The math class that implements the maximum value comparison.  class Math {public    function max ($num 1, $num 2) {     return $num 1 > $num 2? $num 1: $num 2;   }   public static function Max3 ($num 1, $num 2, $num 3) {    $num 1 = Self::max ($num 1, $num 2);    $num 2 = Self::max ($num 2, $num 3);    $num 1 = Self::max ($num 1, $num 2);      return $num 1;   }  }  $a =;  $b =;  $c = 188;  echo "Displays the maximum value in the $a $b $c is";  echo "
"; Echo math::max3 ($a, $b, $c); ? >

The above analysis of the PHP static method and non-static method of the use of the difference is the small part of the whole content to share to everyone, I hope to give you a reference, but also hope that we have a lot of support to help guests home.

http://www.bkjia.com/PHPjc/1127859.html www.bkjia.com true http://www.bkjia.com/PHPjc/1127859.html techarticle A brief analysis of the usage difference between static and non-static methods in PHP, in PHP programming, the Static keyword declares that a property or method is related to a class, not a specific real ...

  • Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.