PHP geschützte Klassen und Eigenschaften, vor denen geschützt?

8

Ich beginne gerade mit OOP PHP mit PHP-Objektorientierten Lösungen von David Powers und bin ein wenig neugierig auf den Begriff des Schutzes in OOP.

Der Autor erklärt klar, wie Schutz funktioniert, aber das bisschen darüber, dass andere nicht in der Lage sein sollen, Eigenschaften zu ändern, fällt ein bisschen flach. Es fällt mir schwer, mir eine Situation vorzustellen, in der es immer möglich ist, andere daran zu hindern, Ihre Klassen zu ändern, da sie einfach Ihre class.php öffnen und manuell optimieren können, wie PHP immer im Klartext angezeigt wird / p>

Achtung: Alles oben Genannte wurde von einem Anfänger geschrieben, der ein Anfängerprogramm beherrscht.

    
Drew 10.01.2011, 02:39
quelle

3 Antworten

17

Von dir selbst!

Sie geben verschiedene Schutzstufen an, um anzugeben, wie eine Klasse verwendet werden soll. Wenn ein Klassenmitglied protected oder private ist, kann nur auf die Klasse selbst zugegriffen werden. Es gibt keine Chance, dass Sie den Wert dieses Elements versehentlich von "externem" Code (Code außerhalb der Klasse) vermasseln können.

Angenommen, Sie haben ein Klassenmitglied, das nur Zahlen enthalten soll. Sie machen es protected und fügen einen Setter hinzu, der überprüft, dass sein Wert nur numerisch sein kann:

%Vor%

Jetzt können Sie sicher sein, dass Foo::$num immer eine Zahl enthält, wenn Sie damit arbeiten wollen. Sie können eine Menge zusätzlichen Fehlerüberprüfungscode überspringen, wann immer Sie ihn verwenden möchten. Jedes Mal, wenn Sie versuchen, etwas anderes als eine Zahl zuzuweisen, erhalten Sie eine sehr laute Fehlermeldung, die es sehr einfach macht, Fehler zu finden.

Es ist eine Einschränkung, die Sie sich selbst auferlegen, um Ihre eigene Arbeit zu erleichtern. Weil Programmierer Fehler machen. Vor allem dynamisch typisierte Sprachen wie PHP lassen Sie im Stillen viele Fehler machen, ohne dass Sie es merken, die dann sehr schwer zu debuggen sind, sehr ernste Fehler später.

Von Natur aus ist Software sehr soft und wird leicht zu einer nicht wartbaren Rube Goldberg-Logikmaschine degradiert. OOP, Kapselung, Sichtbarkeits-Modifikatoren, type-Hinweise usw. sind Werkzeuge, mit denen PHP Ihren Code erstellen kann. " härter ", um Ihre Absicht auszudrücken, was bestimmte Teile Ihres Codes sein sollen und ermöglichen es PHP, diese Absicht für Sie durchzusetzen.

    
deceze 10.01.2011, 02:53
quelle
6

Protected schützt nicht wirklich davor, den Quellcode zu ändern, sondern ist nur eine Klassenmethode Sichtbarkeit in PHP OOP

  

Öffentlich deklarierte Klassenmitglieder können überall aufgerufen werden. Auf Member, die als protected deklariert sind, kann nur innerhalb der Klasse selbst sowie durch geerbte und übergeordnete Klassen zugegriffen werden. Auf Mitglieder, die als privat deklariert sind, darf nur die Klasse zugreifen, die das Mitglied definiert.

    
ajreal 10.01.2011 02:44
quelle
2

Sie meinen, dass sie auf verschiedene Arten geschützt sind ...

  • Private Variablen sind nur innerhalb der Klasse sichtbar.
  • Geschützte Variablen sind für das instanziierte Objekt nicht sichtbar, aber sind für Klassen sichtbar, die von dieser Klasse erben, sowie für die Klasse selbst.

Nichts hält einen anderen Programmierer davon ab, eine Klassendatei zu öffnen und die Zugriffsmodifikatoren zu ändern.

Das Ausblenden von Daten ist eine gute Sache, denn je weniger Sie aufdecken, desto mehr können Sie kontrollieren und weniger Fehler, die Sie möglicherweise einführen können.

    
alex 10.01.2011 02:45
quelle

Tags und Links