sql >> Database teknologi >  >> RDS >> Mysql

Forskellen mellem -> og ::i PHP MySQLi OOP

-> bruges, når der henvises til et medlem af et objekt.

:: er Scope Resolution Operator og bruges til at henvise til et statisk medlem af en klasse.

Overvej følgende klasse:

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

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

Du ville kalde funktionen buzz() ved hjælp af -> :

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

Men ville bruge :: at kalde funktionen fizz() , da det er et statisk medlem (et medlem, som ikke kræver en forekomst af klassen for at blive kaldt):

FooBar::fizz();

Også mens vi taler om forskellen mellem statisk medlemmer versus instantierede medlemmer, kan du ikke bruge $this at henvise til den aktuelle instans i statisk medlemmer. Du bruger selv i stedet (ingen indledende $ ) som refererer til den aktuelle klasse eller forælder hvis du vil henvise til forældreklassen, eller hvis du har fornøjelsen af ​​at arbejde med PHP 5.3.0, statisk (hvilket giver mulighed for sen statisk binding).

Dokumentationen bruger :: at henvise til en funktion inde i en klasse, da klassenavnet i headeren ikke er en forekomst af klassen. Bruger stadig det samme eksempel, en dokumentationspost, der henviser til funktionen buzz() ville bruge følgende overskrift:

FooBar::buzz

Men medmindre dokumentationen angiver, at det er et statisk medlem, skal du bruge -> på en instans for at kalde det:

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


  1. mysql count gruppe efter ordre efter optimering

  2. Brug af Metadata Discovery Wizard

  3. Får du en PHP PDO-forbindelse fra en mysql_connect()?

  4. Hvorfor og hvornår skal jeg bruge SPARSE COLUMN? (SQL SERVER 2008)