是否有任何性能差异?主要区别是什么? ,还有更多像类范围和对象范围之间的区别
public static function
static public function
它是一样的吗?
抱歉的新手问题 感谢在
亚当·拉马丹
是否有任何性能差异?主要区别是什么? ,还有更多像类范围和对象范围之间的区别
public static function
static public function
它是一样的吗?
抱歉的新手问题 感谢在
亚当·拉马丹
寻找有两个没有什么区别:
public static function
static public function
这两个类的外部访问。在这两种情况下,你都不能在函数内使用$ this,因为静态函数并不要求实例化一个对象。
考虑你有一个Cars类。
// Constructors call to a private static function add_this_car();
$car1 = new Cars('bentley');
$car2 = new Cars('Porsche GT1');
// public static function get_created_cars();
$all_cars = Cars::get_created_cars();
这样一个类可以照顾它的所有实例(以及对每个实例的引用)。还有应该由类本身处理并且不需要创建实例的东西。
jessy said(irC#php)static表示它定义在类范围rathar而不是object scope,我只是不懂静态的东西(我从来没有用过它们),我的意思是它们是如何工作的,等等,尤其是在面向对象的编程中。我使用像$ this->不是这个::或与::静态魔术的东西。 :),我希望你明白我的意思 – 2010-11-13 07:32:31
这是否编辑回答你的问题如何使用“静态”功能? – 2010-11-13 07:37:39
所以最差的是我们不需要启动它们?还有其他差异,如表演或任何? – 2010-11-13 07:45:28
想象一下,像一个漂亮的容器一样,静态方法可以将相关函数放在一起。
假设你想创建一个完整的你喜欢的字符串格式化函数。
然后你可以说MyClass::MakeUppercase($string)
使字符串大写。你可以说MyClass::MakeLowercase($string)
使字符串小写。
由于您的工具类不代表任何类型的对象,也没有任何类型的内部状态来跟踪,您没有理由实例化它的对象。没有$myvar = new MyClass()
才能使用这些功能。这只会浪费内存创建永远不会有不同内部状态的对象来跟踪。
所以范围只是在class :: afunction?我是否正确? – 2010-11-13 07:47:48
你是指class :: hello()和$ class-> hello()之间的区别吗?我在标签中看到静态 – 2010-11-13 07:16:44
我只是不明白为什么人们使用它们?告诉通常的问题是什么,以便我必须使用静态标签。 – 2010-11-13 07:20:13
噢好吧,我明白了,让我编辑我的答案! – 2010-11-13 07:30:10