2009-08-05 2 views
0

Ich habe ein Problem beim Festlegen eines privaten Attributs für eine PHP-Klasse, meine __set() -Methode wird jedoch aufgerufen, wenn ich dies auf ein Attribut, das ein Array ist es führt zuerst meine __get() -Methode, die die ser unbrauchbar macht:/Festlegen eines privaten Attributs, das ein Array in einer PHP-Klasse ist

$this->person['name'] = 'perro'; 

einfach, funktioniert nicht, eine Idee zu diesem Thema?

+0

Können Sie die __set() Methode anzeigen? – danieltalsky

+0

Können Sie etwas mehr Code zeigen? Wie ein kleiner Testfall reproduziert das Problem? Stellen Sie außerdem sicher, dass Ihr error_reporting-Level so ist, dass E_NOTICE-Fehler angezeigt werden (dies könnte Ihnen wirklich dabei helfen); und schließlich, bist du sicher, dass die Eigenschaft "person" in deiner Klasse existiert? –

Antwort

3

wenn Ihr Attribute ist private, nicht in der Lage zu sein es, wenn ganz normale (entweder zum Lesen oder Schreiben) von einer Unterklasse zu sehen: Attribut private bedeutet, dass Sie ist privat zu der Klasse, in der es definiert ist.

, dass der Unterschied zwischen privat ist und geschützt:

  • privat zugänglich = nur für die eine Klasse in
  • geschützt = von jeder Klasse, die Klasse „a“ you'r des Typs deklariert ist deklarieren (Super- oder Unterklasse)
  • Öffentlichkeit von jedermann zugänglich =

Für weitere Informationen über diese in PHP finden Visibilty im Handbuch.

Sie werden wahrscheinlich mehr Informationen im Internet darüber finden, falls erforderlich: es ist eine der Grundlagen der objektorientierten Programmierung und gilt in anderen Sprachen (wie C++, zum Beispiel)
Suche nach Stichworten wie zB "Visibility", "Encapsulation" oder "Information Hiding" - in Verbindung mit OOP/Objektorientierte Programmierung

0

Lösen Sie es, war das Problem, das ich versuchte, eine private Variable in meiner Klasse zu setzen, und ich verstehe nicht, warum, wenn Im exteing PHP mir diese

Attribute

zu korrigieren dieses Problem, das ich nicht berühren lassen nur änderte meine Attribute von privat zu

geschützt
+1

Das ist die Definition eines Privateigentums. Nur die Klasse, die das private Attribut definiert, kann ihren Inhalt ändern/darauf zugreifen. Ein geschütztes Attribut ermöglicht es untergeordneten Klassen, es zu ändern/darauf zuzugreifen. Gerade sah, dass Pascal MARTIN diesen Unterschied schön erklärt. –

Verwandte Themen