sql >> Databasteknik >  >> RDS >> Mysql

Skillnad mellan -> och ::i PHP MySQLi OOP

-> används när man refererar till en medlem av ett objekt.

:: är Scope Resolution Operator och används för att referera till en statisk medlem av en klass.

Tänk på följande klass:

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

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

Du skulle kalla funktionen buzz() med -> :

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

Men skulle använda :: för att anropa funktionen fizz() , eftersom det är en statisk medlem (en medlem som inte kräver att en instans av klassen anropas):

FooBar::fizz();

Dessutom, medan vi pratar om skillnaden mellan statisk medlemmar kontra instansierade medlemmar kan du inte använda $this för att referera till den aktuella instansen inom statisk medlemmar. Du använder själv istället (ingen inledande $ ) som refererar till den aktuella klassen, eller förälder om du vill hänvisa till föräldraklassen, eller om du har nöjet att arbeta med PHP 5.3.0, statisk (vilket möjliggör sen statisk bindning).

Dokumentationen använder :: att referera till en funktion i en klass eftersom klassnamnet i rubriken inte är en instans av klassen. Använder fortfarande samma exempel, en dokumentationspost som hänvisar till funktionen buzz() skulle använda följande rubrik:

FooBar::buzz

Men om inte dokumentationen anger att det är en statisk medlem, måste du använda -> på en instans för att kalla den:

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


  1. Hur man skapar vy i SQL

  2. Hur skickar jag en lista som en parameter i en lagrad procedur?

  3. Simulera fördröjningsfunktion i MySQL

  4. Entity-framework-koden är långsam när du använder Include() många gånger