$ This-> fonksiyon (olsa bile Neden kendine :: function () ve $ self-> değişken veya self :: $ değişken) ve $ this-> değişken (PHP)?

2 Cevap php

Ben bu iki anahtar kelimeler ve PHP5 bunları kullanmak için yol hakkında kafam karıştı. "Bu" nesnenin kendisi değil, bunun bir örneği atıfta ve böylece statik nesneler içinde kullanılan "öz" ise (durağan değil) instanced nesneler için kullanılır olduğunu düşünüyorum. Değil mi?

Şimdi, başka bir statik değişken / yöntemini çağırmak için bir sınıfın statik yöntemi içinde doğru kullanımı aşağıdaki olduğuna inanıyoruz:

self::doSomething();
self::$testVar;

Bu doğru mu?

Ancak, şu da mümkün görünmektedir:

$self->testVar;

Oysa, $ testVar statik. Neden ki?

Ayrıca, neden $ ve bazen bazen kendini Infront kullanılan ve "Bu" anahtar kelime için aynı soru nedir?

2 Cevap

$ Bu örneklenmiş olanlar için ise haklısın, kendini statik kendini başvuruları içindir. kendini ve $ bu her yerde çalışırım ama bu dikkate görünebilir:

class A
{
  public static function foo()
  {
    $this->bar();
  }

  public static function bar()
  {
    echo 'foobar!';
  }
}

A::foo(); // Fatal error: Using $this when not in object context

Foo () statik olarak adlandırılır çünkü bu bir ölümcül hata ile sonuçlanır. Bu biraz zaman alabilir ve bir veya diğer kullanarak her zaman uygun bir yerine bunları kullanmak en iyisidir.

Bunu doğru anlamak gibi görünüyor. Eğer mevcut nesnesinin bir örneği yok zaman ne zaman $ this-> sözdizimi kullanılır ise self ::, statik üyeleri ve işlevleri için kullanılır.

Yani statik bir yöntem, sen kendini kullanmak gerekir :: statik yöntem sadece ... statik ve oluşturulan nesnenin bir örneği olmadan denilebilir b / c. (Yani YourClass :: staticFunction ()) Bu fonksiyon bir örneği nesne üzerinden çağrıldığını gibi bir statik olmayan yönteminde $ this-> memberVar kullanmak için bile mükemmel mantıklı. ($ YourClass-> nonStaticFunction ()) Bu nedenle $ bu aslında işlevi bağlamında var.