我想知道這兩種方法之間的差異用於初始化類這兩種初始化PHP類的方法有什麼區別?
方法1(使用範圍解析運算符)的對象:
Test::foo();
方法2(創建對象的實例) :
$test = new Test;
$test->foo();
這是什麼->
運算符叫?
我想知道這兩種方法之間的差異用於初始化類這兩種初始化PHP類的方法有什麼區別?
方法1(使用範圍解析運算符)的對象:
Test::foo();
方法2(創建對象的實例) :
$test = new Test;
$test->foo();
這是什麼->
運算符叫?
Test::foo()
只是靜態調用一個類的方法,它不會對對象做任何事情。它可能會初始化類中的靜態值,但通常不使用靜態初始值設定項。在Singletons的情況下,可以在內部使用靜態初始化程序,但不應該像這樣調用公共靜態初始化程序。
$test = new Test
實際上實例一個對象,在該方法中有可能初始化。
請注意區別之間初始化(設置對象/類/變量的初始狀態),並且的instantiate(創建從一個類對象實例)。
->
是T_OBJECT_OPERATOR
。
::
被稱爲 「Paamayim Nekudotayim」(它的希伯來文),->
是對象操作:
http://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php
也不應該被用來初始化類。有一個神奇的__construct()
方法是,它是由new
操作自動調用:
http://php.net/manual/en/language.oop5.decon.php
Test::foo()
意味着調用方法foo()
靜態,實際對象的範圍之外。把它看作某種(慢)名稱空間函數。
$test->foo()
表示對象$ test的調用方法foo()
。
我把它叫做一個箭頭......但不同的是,用箭頭的方法,你正在創建一個類的新實例作爲對象,然後可以作爲一個對象引用。另一個只是調用某個類的某種方法。通過這個對象,你可以存儲屬性和調用函數,並將事物存儲在那個對象中,並且你可以調用該對象的多個實例並單獨使用它們......我漫不經心,但有很多事情可以用只調用單獨方法的對象是有限的。
匿名downvote?謝謝。 – spanky 2011-05-20 07:26:33
你需要利爾接力(Object Oriented Programming),以及PHP
的內部類的功能此實現,被調用的方法,這種方法可以叫上類的實例,或在靜態模式下,第一次調用,不要創建類*的一個實例,這個調用的方法「富」是靜態的。
class Test {
public static $static_atribute;
public $normal_atribute;
public function Foo($q) {
$this->normal_atribute = $q;
}
public static function SFoo ($q) {
// I dont can access to $this
self::$static_atribute = $q;
}
}
Test::Foo("hello");
// This thrown an error because $this dont exist in static mode
Test::SFoo("hello");
//This works, and the static property change
echo Test::$static_atribute;
// this puts "hello"
echo Test::$normal_atribute;
// this thrown an error
$a = new Test();
// $a is an instance of Test
$a->foo("hello");
// this works and the normal_atribute change in THIS instance
$b = new Test();
// $b is anoter instance of Test
$b->foo("bye");
// normal_atribute change in THIS instance
echo $a->normal_atribute;
// puts hello
echo $b->normal_atribute;
// puts bye
[PHP中 - >和::之間有什麼區別?](http://stackoverflow.com/questions/1804187/what-is-the-difference-between-and-in-php) – 2011-05-20 06:51:27