kam*_*lot 13 php static static-methods class function
所以在PHP中你可以拥有
Class A{
function B(){}
}
Run Code Online (Sandbox Code Playgroud)
你可以把它称为静态函数:
A::B();
Run Code Online (Sandbox Code Playgroud)
我的问题是......如果我能做到这一点,那么我为什么要将函数B()声明为静态,因为这样做会使$ this不可用,所以灵活性较低,所以你有一切都会失去但却无法获得...... .
或者是否有一个将我不知道的函数声明为静态的优点?
我也听说过"非静态方法的静态调用"被"弃用"了......这究竟与这种情况有什么关系呢?A::B()在B()没有被声明为静态的东西时我正在调用吗?如果是这样,为什么会这样呢?
Pel*_*off 11
因为PHP在严格性(?)方面往往有点松散,所以这些事情都有效.它们被弃用的事实意味着在将来的版本中,它可能不再起作用了.因此,如果您在静态上下文中调用非静态函数,则您的程序可能会在将来的PHP升级中中断.
至于现在使用它 - 将函数声明为静态的优点是你正在决定应该如何使用该函数.如果您打算在静态上下文中使用某个函数,那么无论如何都不能使用$ this,因此您最好只清楚自己打算做什么.如果要静态使用该功能,请将其设置为静态.如果你不这样做,那就不要了.如果您想静态和非静态地使用某个功能,请重新检查您的要求:P