我做了一些研究,但我不知道它所称的术语或单词是什么。
以下是一个例子:
Class Exam {
public static function test($id)
{
return $id;
}
}
echo Exam::test(1);
我想要搜索的是......我不想理解在一行中调用类和函数的缩小方法。就像laravel一样。我是以原生代码编写的。
答案 0 :(得分:1)
这是一个经常出现堆栈溢出的问题。
Classname::method();
只是在类中调用静态方法的一种较短方式。使用::
时,您不需要首先实例化该类。请考虑以下内容 -
Class Classname{
static public $var = date("F j, Y");
static public method(){
return self::$var;
}
}
echo Classname::method();
$c = new Classname();
echo $c->method();
两条回波线将以F j,Y格式回显今天的日期。
为什么要使用静态方法?考虑上面的这个例子,你有一个日期格式,你希望它是一个不可变的值。静态方法是无状态的。因此,在示例中,我们有一个访问静态变量的静态方法。静态属性不能像$this
那样访问类。但是,如果要访问其他静态属性,则可以访问类本身。 Classname::$var
或self::$var
有效。
我知道,我有点没有回答"为什么"部分你没有问过每个人的说法。我突然意识到我最好的答案是"我不知道。"我知道静态方法或属性是什么,但我并不是真的有一个铁的例子,你将专门使用一个AND在同一个例子中解释为什么你必须使用静态方法,公共方法将是生与死的区别。我欢迎具有实际经验的其他人发布关于何时以及为什么要使用静态方法(其中静态部分是公理上关键的)的答案。我知道这不是OP的实际问题,但实际上并不了解并真正理解静态方法和属性的目的或必要性,将::
分解为你的要点是什么?每日代码?