任何人都可以帮助我在这段代码中,静态类和非静态类和方法之间的差异是什么

时间:2016-01-23 04:55:14

标签: php

请告诉我静态类和非静态类和方法之间的区别。

 <?php

  class  a
{

public  static function sum($a,$b)
    {
        return $a+$b;

    }

}


$obj = new a();
echo $obj->sum(20,30);
echo $c=a::sum(10,10);

?>

4 个答案:

答案 0 :(得分:0)

静态方法对于类的每个实例都是相同的。它附在课堂上。非静态(实例)方法附加到对象(类的实例)。功能差异在于实例方法可以访问实例属性,而静态方法则不能访问,因为它存在于类级别。

答案 1 :(得分:0)

以下是PHP手册

的摘录

将类属性或方法声明为静态使它们可以访问,而无需实例化类。

使用实例化的类对象无法访问声明为static的属性(虽然静态方法可以)。

答案 2 :(得分:0)

根据定义,静态函数不能也不依赖于类的任何实例属性。也就是说,它们不需要执行类的实例。 从某种意义上说,这意味着该函数不会(并且永远不需要)依赖于类的成员或方法(公共或私有)。

答案 3 :(得分:0)

我的代码不是php。它更像是一种通用表示。 假设您想要找到一个数字的正弦值。你很可能通过做Math m = new Math(); // create instance m.sine(30); // call instance method 这样的事情来依赖内置的数学库。您将看到我如何在Math类中访问方法正弦而不创建Math类的实例。这些方法是静态方法。如果正弦不是静态方法,那么我必须做类似

的事情
Math.sine(30) // static call

静态方法

--extra-vars "@some_file.json" --extra-vars "key=value"