请告诉我静态类和非静态类和方法之间的区别。
<?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);
?>
答案 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"