"->" Arasındaki fark

8 Cevap php

Herkes mysqli->commit ve mysqli::commit arasındaki farkı söyleyebilir misiniz?

In başlık this page olan mysqli::commit, ancak örneklerde kullandıkları mysqli->commit.

Kafam karıştı.

8 Cevap

Bir nesnenin bir üyesi atıfta -> kullanılır.

:: olan Scope Resolution Operator ve A Sınıfı bir statik üyesi başvurmak için kullanılır.

Aşağıdaki sınıfı düşünün:

class FooBar {
    public static function fizz() {
        echo "Fizz";
    }

    public function buzz() {
        echo "Buzz";
    }
}

Sen fonksiyonunu buzz() kullanarak çağırır ->:

$myFooBar = new FooBar();
$myFooBar->buzz();

Ama ::, bir statik üye (çağrılacak sınıfının bir örneğini gerektirmeyen bir üyesi) olduğu gibi, fizz() functon aramak için kullanabilirsiniz:

FooBar::fizz();


Biz instantiated üyelerine karşı static üyeleri arasındaki fark hakkında konuşurken Ayrıca, size $this içinde geçerli örneğine başvurmak için kullanamazsınız {[(0) }] üyeleri. Geçerli sınıfa gelir self instead (no leading $) hangi kullanmak, ya da parent if you want to refer to the parent class, or if you have the pleasure of working with PHP 5.3.0, static (bağlama geç statik olanak sağlayan .)


Dokümantasyon kullanımları :: başlığında sınıf adı gibi bir sınıf içinde bir işleve başvurmak için sınıfının bir örneği değil. Yine aynı örneği kullanarak, işlevine atıfta dokümantasyon giriş buzz() şu başlığı kullanabilirsiniz:

FooBar::buzz

Dokümantasyon statik üyesi belirtmediği sürece Ama, onu aramak için bir örnek üzerinde -> kullanmanız gerekir:

$myFooBar = new FooBar();
$myFooBar->buzz();

:: Statik yöntemler kullanılmaktadır

- Zaten örneği varsa> bir nesne yöntemi için kullanılan

Eğer bir nesnenin örneği varsa, kullanmak -> Bu örneği içinde bir yönteme başvurmak için:

$foo = new Foo();
$foo->bar();

Nesnesinin bir örneğini oluşturmak zorunda kalmadan, statik yöntemini çağırır :: Kullanımı:

Foo::baz();

Statik bir yöntem $this aracılığıyla bir o mevcut örneğine bakın, ancak self kullanarak kendisi (geçerli sınıf) başvurabilirsiniz.

:: aslında bir nesneyi başlatmasını olmadan çağrılabilir statik (sınıf) yöntemini belirtir. Kullanmak mümkün örneği bir nesne gerekir bunun için ->, bir örneği (nesne) yöntemini belirler.

Yani, örneğin, size sınıfının bir örneği mysqli, sen $m->commit() söyleyerek commit dediğimiz oldu $m bir değişken olsaydı, ya diyerek statik taahhüt diyebiliriz MySQLi::commit()

:: Bir nesneyi örneklilik olmadan sınıf 'işlevini erişir.

-> operatörü nesne özelliklerinde bir :: operatör sınıfı özelliklerinin için içindir.

mysqli-> tamamlama kamusal bir işlev ve mysqli :: tamamlama iki mysqli sınıfın php nesne gösterimler statik bir işlevi olduğunu.

genellikle php.net belgelerinde :: bu sınıf bu yöntemi anlamına gelir. Pratik kullanım için, örnek takip gerekir, böylece kullanmak -> sözdizim.