sql >> Databáze >  >> RDS >> Mysql

Rozdíl mezi -> a ::v PHP MySQLi OOP

-> se používá při odkazování na člena objektu.

:: je operátor rozlišení rozsahu a používá se k označení statického člena třídy.

Zvažte následující třídu:

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

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

Volali byste funkci buzz() pomocí -> :

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

Ale použil by :: k volání funkce fizz() , protože je to statický člen (člen, který nevyžaduje volání instance třídy):

FooBar::fizz();

Také, když mluvíme o rozdílu mezi statickým členové versus instanci členové, nemůžete použít $this odkazovat na aktuální instanci v rámci statické členů. Používáte self místo toho (bez úvodních $ ), která odkazuje na aktuální třídu, nebo parent pokud chcete odkazovat na nadřazenou třídu nebo pokud máte to potěšení pracovat s PHP 5.3.0, statický (což umožňuje pozdní statickou vazbu).

Dokumentace používá :: odkazovat na funkci uvnitř třídy, protože název třídy v záhlaví není instancí třídy. Stále používáme stejný příklad, záznam v dokumentaci odkazující na funkci buzz() by použilo následující záhlaví:

FooBar::buzz

Ale pokud dokumentace neuvádí, že se jedná o statický člen, budete muset použít -> na instanci jej nazvat:

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


  1. Aktualizujte jednu tabulku MySQL hodnotami z jiné

  2. Rozměry dimenzí:Podívejte se na nejběžnější typy dimenzionálních tabulek v Data Warehousing

  3. Kde klauzule funguje, nefunguje na tinyint

  4. Převeďte nový řádek na XML v rámci Oracle Trigger