是什麼叫使用->
和::
是什麼訪問之間的差異的方法 - >和訪問方法::
class a
{
function b()
{
echo "abc";
}
}
的是這兩者之間的區別的方法之間的基本區別?
a::b();
$c = new a; $c->b();
是什麼叫使用->
和::
是什麼訪問之間的差異的方法 - >和訪問方法::
class a
{
function b()
{
echo "abc";
}
}
的是這兩者之間的區別的方法之間的基本區別?
a::b();
$c = new a; $c->b();
->
執行實例的上下文中的方法,而::
訪問一類的靜態上下文的方法。後者只能通過self::
訪問該類的靜態成員,而前者也可以通過$this->
使用實例成員。
a::b();
用於調用類(獨立於任何對象cotext的)的背景下靜態方法上面的語句從而$這不是在靜態方法可用
$c = new a; $c->b();
以上用於在對象($ c)的上下文中調用實例方法,因此$ this(參考對象$ c)在實例方法
內可用謝謝
定義你的類時,你應該明確聲明你的屬性和方法的可見性,以及它們是否是靜態的。
在你的榜樣類應該是:
class A
{
public static function b() {
echo "abc";
}
}
方法B()應該是靜態的,因爲它不涉及任何實例變量。要調用B(),需要使用:
A::b();
如果你的方法是使用一個實例變量(非靜態屬性)類可能會是這樣的:
class Foo
{
private $bar; // non static instance variable
public function __construct($bar) {
$this->bar = $bar; // instance variable set in the constructor
}
public function baz() {
echo $this->bar; // instance variable referred to in the non-static method
}
}
,那麼你會打電話這樣的功能:
$x = new Foo('abc');
$x->baz();
謝謝你哥們 –