Différence entre “->” et “::” en PHP MySQLi la programmation orientée objet
Peut-on dire de la différence entre mysqli->commit
et mysqli::commit
?
L'en-tête dans cette page est mysqli::commit
, mais dans les exemples qu'ils utilisent mysqli->commit
.
Vous devez vous connecter pour publier un commentaire.
->
est utilisé pour faire référence à un membre d'un objet.::
est le Opérateur De Résolution De Portée et est utilisé pour faire référence à un membre statique d'une Classe.Considérer la classe suivante:
Vous devez appeler la fonction
buzz()
à l'aide de->
:Mais serait d'utiliser
::
d'appeler le duefizz()
, comme il est un membre statique (un membre qui ne nécessite pas une instance de la classe à être appelé):Aussi, alors que nous parlons de la différence entre statique membres contre instancié membres, vous ne pouvez pas utiliser
$this
à se référer à l'instance en cours au sein de statique membres. Vous utilisezauto
à la place (aucun$
), qui fait référence à la classe en cours, ouparent
si vous voulez faire référence à la classe parent, ou si vous avez le plaisir de travailler avec PHP 5.3.0,statique
(qui permet de late static binding).La documentation
::
pour faire référence à une fonction à l'intérieur d'une classe comme le nom de la classe dans l'en-tête n'est pas une instance de la classe. Toujours en utilisant le même exemple, une documentation entrée se référant à la fonctionbuzz()
serait d'utiliser l'en-tête suivant:Mais à moins que la documentation indique qu'il est un membre statique, vous aurez besoin d'utiliser
->
sur une instance de l'appeler:::
est utilisé pour méthodes statiques.->
est utilisé pour la méthode d'un objet si vous avez déjà de l'instance.Si vous avez une instance d'un objet, vous devez utiliser -> pour faire référence à une méthode à l'intérieur de cette instance:
À l'aide de :: les appels à une méthode statique, sans avoir à créer une instance de l'objet:
Une méthode statique ne peut pas se référer à une instance en cours à travers
$this
, mais peut se référer à lui-même (de classe en cours) à l'aide deself
.self
existe pour se référer à la classe en cours dans un contexte statique. Il ne fait pas référence à une instance, mais à lui-même:class A { static function b() { self::c(); } private static function c() { echo 'hello'; } };
::
spécifie un statique (classe), qui est remboursable sans réellement l'instanciation d'un objet.->
spécifie une instance (objet) de la méthode, pour lequel vous avez besoin d'un objet instancié à être en mesure d'utiliser.Ainsi, par exemple, si vous avez eu une variable
$m
qui est une instance de la classemysqli
, vous appelezcommit
en disant$m->commit()
, ou vous pouvez appeler s'engager de manière statique en disantMySQLi::commit()
:: accède à la classe de fonction sans l'instanciation d'un objet.
en mysqli->commit, mysqli est une instance de MySQLi
en mysqli::commit appel d'une méthode statique
mysqli->commit est une fonction publique et mysqli::commit est une fonction statique, les deux sont php objet de notations de la classe mysqli.
habituellement dans php.net documentation :: signifie que cette classe a de la méthode. Pour la pratique de l'utilisation, vous devez suivre l'exemple pour utiliser l' -> sintax.
La
->
opérateur est pour les propriétés de l'objet.La
::
opérateur est pour des propriétés de la classe.