web-dev-qa-db-fra.com

différence entre public et public statique?

que signifie statique?

Je sais que public signifie qu'il est accessible de l'extérieur de la classe et privé uniquement de l'intérieur de la classe

40
Alex

Statique signifie qu'il est accessible sans instancier une classe. C'est bon pour les constantes.

Les méthodes statiques ne doivent avoir aucun effet sur l'état de l'objet. Ils peuvent avoir des variables locales en plus des paramètres.

39
BillThor

public: Les éléments déclarés publics sont accessibles partout.

protected: Protected limite l'accès aux classes héritées et parentes (et à la classe qui définit l'élément).

private: Private limite la visibilité uniquement à la classe qui définit l'élément.

statique: Une variable statique n'existe que dans une portée de fonction locale, mais elle ne perd pas sa valeur lorsque l'exécution du programme quitte cette portée.

final: le mot clé Final empêche les classes enfants de remplacer une méthode en préfixant la définition par final. Si la classe elle-même est définie comme définitive, elle ne peut pas être étendue.

transitoire: Une variable transitoire est une variable qui ne peut pas être sérialisée.

volatile: une variable qui pourrait être modifiée simultanément par plusieurs threads doit être déclarée volatile. Les variables déclarées volatiles ne seront pas optimisées par le compilateur car leur valeur peut changer à tout moment.

33
Cristian David

de http://php.net/manual/en/language.oop5.static.php

La déclaration de propriétés ou de méthodes de classe comme statiques les rend accessibles sans nécessiter une instanciation de la classe. Une propriété déclarée comme statique n'est pas accessible avec un objet de classe instancié (bien qu'une méthode statique le puisse).

15
bensiu

Un exemple ... Lorsque vous utilisez un mot clé statique, nous ne pouvons pas utiliser $ this ..

class Foo{
    private $foo='private';
    private function priv_func(){
        echo 'priv_method';
        }
    public static function ger(){
        echo $this->foo;
        $this->priv_func();
        } 
    }
//class Zero extends Foo{}; 
$obj=new Foo;

$obj->ger();

Erreur fatale: utilisation de $ this en dehors du contexte de l'objet dans

4
zloctb