2017-05-04 5 views
0

Müssen Funktionen und Variablen als public deklariert werden oder sind sie standardmäßig public?Php - Müssen Funktionen und Variablen öffentlich deklariert werden?

Class Bread { 
    $bread = "";  
    function toast() 
    { 
     $bread = "Toasticles!" 
    } 
} 

In diesem Beispiel ist sowohl $bread und die öffentliche Funktion toast() ohne sie tatsächlich als solche zu erklären?

Dies ist eine Frage über Instanzvariablen und Funktion Sichtbarkeit

+0

Tun Sie es einfach. Dies ist eine Abkürzung ohne Nutzen. –

+0

[Methoden, die ohne explizites Sichtbarkeits-Schlüsselwort deklariert sind, werden als öffentlich definiert.] (Http://php.net/manual/en/language.oop5.visibility.php#language.oop5.visiblity-methods) –

+0

Nein, das tun sie nicht müssen öffentlich gemacht werden (sonst gäbe es keinen privaten oder geschützten Punkt, der überhaupt existiert); Sie werden öffentlich sein, wenn Sie nicht anders angeben .... aber für die Klarheit ist es besser zu spezifizieren –

Antwort

1

Wenn Sie erklären $bread ohne Sicht, Sie wird erhalten einen Parse-Fehler:

Parse error: syntax error, unexpected '$bread' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in [...][...] on line x

Dies liegt daran, wie @darkcrystale auch erwähnt, und als PHP documentation states, Klasseneigenschaften muss als public definiert werden, privat, oder geschützt. Wenn mit var deklariert, wird die Eigenschaft als public definiert.

Die Funktion toast() wird standardmäßig public sein, wenn Sie die Sichtbarkeit nicht explizit angeben.

Aber bitte beachten Sie, dass Dinge explizit zu tun ist besser, als Dinge implizit zu tun. Die Sichtbarkeit in jedem Fall als öffentlich zu erklären, könnte also denjenigen helfen, die Ihren Code nach Ihnen gelesen haben. Wenn Sie sich nicht um diejenigen kümmern, die mit Ihrem Code arbeiten könnten (in diesem Fall schade Ihnen), denken Sie an ein anderes Beispiel: Sie schreiben viel Code, der die Sichtbarkeit nicht explizit deklariert, und es ist public zu dieser Zeit. Aber wenn die PHP-Entwickler verrückt werden und die Standardsichtbarkeit auf private ändern, dann wird der meiste Code aus offensichtlichen Gründen nutzlos (und wird nicht funktionieren).

2

Nach den PHP documentation

Eigenschaften:

Class properties must be defined as public, private, or protected. If declared using var, the property will be defined as public.

Methoden:

Methods declared without any explicit visibility keyword are defined as public.

+0

Scheint dumm. Warum Methoden standardmäßig public machen, aber Instanzvariablen müssen explizit deklariert werden. –

+0

Gute Frage, ich denke, Sie sollten es auf StackOverflow fragen. – darckcrystale

Verwandte Themen