| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Erfahrener Benutzer Registriert seit: 19.03.2007
Beiträge: 176
![]() | Zitat:
Naja gut, Speicher verbraucht das ganze natürlich nicht da es ja eine Referenz ist. Allerdings müsste PHP - theoretisch - ja unendlich lange rechnen, da es diese Referenz doch unendlich oft erzeugt, oder? Allerdings scheint es sowas wohl zu erkennen ... Zu deiner Lösung: Die kann ich leider nicht nehmen da der Variablenname von der Instanz von A nicht fest ist. B ist eigentlich nur eine "Hilfsklasse" von A. Im Klartext: A ist eine Klasse "HTMLForm" die mir HTML-Formulare einfach und valide erzeugen soll. B ist hier "HTMLFormField", also ein Feld innerhalb es Formulars. Allerdings brauche ich in HTMLFormField einigige Informationen aus dem Formular, zu dem das Feld gehört - und genau darum gehts dann im Endeffekt. mfg | |
| |
| | |
| Supermoderator HD Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Du kannst nicht auf die privaten Eigenschaften einer anderen Klasse zugreifen. Was du hingegen machen kannst, ist, sie als protected zu deklarieren. Nun muss die eine Klasse von der anderen abgeleitet werden und du hast Zugriff auf die Eigenschaften. Eine andere Möglichkeit wäre ein Iterator-Pattern. Bei diesem werden u.a. Getter und Setter definiert. Beim Iterieren über das Objekt kann die Klasse dann entscheiden, welche Eigenschaften sie zur Verfügung stellt.
__________________ Refining Linux Advent Calendar series “24 Outstanding ZSH Gems” |
| |
| | ||
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
Was auch ginge, wäre ein statisches Array in A, das die Instanzen über einen Schlüssel verwaltet. Bspw. PHP-Code:
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- | |
| |
| | |||
| Erfahrener Benutzer Registriert seit: 19.03.2007
Beiträge: 176
![]() | Zitat:
Zitat:
Trotzdem würde ich gerne verstehen, wieso das System wie ich es im Ausgangspost beschrieben habe zu keiner Endlosschleife führt. Sowohl mit als auch ohne & müsste das passieren, nur das ohne & zusätzlich noch der Speicher vollgeschrieben wird weil jedesmal ein neues Objekt erzeugt wird. Kann mir das jemand erklären? Ach und ansonsten kann ich nur sagen: Habe jetzt in der Zwischenzeit mit new B(&$this) gearbeitet und bisher funktioniert das sehr gut. Wüsste gerne was da genau bei PHP passiert und wieso / wieso nicht man das verwenden sollte? Das $this eine spezielle Variable ist stimmt zwar, aber im Grunde enthält sie ja nur die Instanz des Objekts innerhalb der Klasse, also kann ich sie doch prinzipiell auch referenzieren und weitergeben. Bisschen Aufklärung bei dem Thema wär toll mfg | ||
| |
| | |
| Supermoderator HD Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Nein, nicht falscher Thread. Nur frage ich mich, wo das Problem liegt, wenn die Eigenschaften doch eh public sind 8was eigentlich nicht sein sollte).
__________________ Refining Linux Advent Calendar series “24 Outstanding ZSH Gems” |
| |
| | ||
| Neuer Benutzer Registriert seit: 01.12.2008
Beiträge: 9
![]() | Zitat:
Mit dieser Adresse kann php nun auf den Inhalt(also die Daten, zb eine Zahl oder ein Text) zugreifen. Dh, jeder Variable verweißt auf eine Adresse im Arbeitsspeicher. Beim arbeiten mit Variablen wird ständig der Inhalt an dieser Adresse wieder herausgelesen oder geschrieben. Wenn du der Funktion den Variablen $a übergibst, so ließt php die Daten aus dem Arbeitsspeicher und schickt sie der Funktion(= eine Kopie, die Variable in der Funktion bekommt eine andere Adresse, wo dann die Kopie reingeschrieben wird). Wenn du aber eine Referenz(&$a) übergibst, so schickt php der Funktion nicht den Inhalt, sondern nur die Information wo dieser Inhalt zu finden ist, also die Adresse. Dh, du hast nun 2 Variablen, die genau auf denselben Punkt im Arbeitsspeicher zeigen, wenn du mit der Funktion den Inhalt änderst, so wird die originalvariable beim nächsten Lesen des Inhalts auch den neuen WErt bekommen. Also hat Php beim Arbeiten mit Referenzen im Prinzip weniger zu tun. (ob das reell auch so ist weiss ich nicht) hm, meinst du vielleicht das? Dann wäre es recht einfach: PHP: extends - Manual | |
| |
| | ||
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
@Salkin: Ich schätze, das ist ihm schon klar. @bw: Die Referenz wird ja nicht weiter verarbeitet, sie wird ja nur zugewiesen. Und wenn sie verarbeitet wird (bspw. in print_r) lotet PHP die Schleifen aus. Ich glaube irgendwo habe ich mal gelesen, dass das nicht immer klappt (war m.E. bei nem var_export oder so)...
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- Geändert von nikosch (04.12.2008 um 00:04 Uhr). | |
| |
| | |
| Supermoderator HD Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ich habe ihn jetzt aber so verstanden, dass die Übergabe des Objektes selbst kein Problem ist. Er will nur nicht jede Eigenschaft einzeln vergeben und das muss er bei Übergabe des Objekts ja auch nicht.
__________________ Refining Linux Advent Calendar series “24 Outstanding ZSH Gems” |
| |
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Methode einer anderen Klasse aufrufen | Luka | PHP-Fortgeschrittene | 15 | 09.11.2008 14:19 |
| Klasse aus externer Klasse aufrufen | kostja | PHP Tipps 2008 | 8 | 07.08.2008 14:13 |
| aufrufende Klasse und Funktion abfragen?? | galaxyshadow | PHP Tipps 2008 | 4 | 10.06.2008 06:43 |
| Variable aus Klasse herausbekommen | GSJLink | PHP Tipps 2008 | 7 | 16.02.2008 22:25 |
| Zugriff auf Objekte anderer Klassen | nieselfriem | PHP Tipps 2007 | 7 | 14.05.2007 12:48 |
| String-Parser Klasse - was muss rein? | Matze | PHP Tipps 2007 | 2 | 08.04.2007 22:14 |
| mehr als eine Klasse einbinden | Alpha Centauri | PHP-Fortgeschrittene | 4 | 13.04.2006 20:56 |
| Zugriff auf eine Klasse innerhalb einer Funktion -> Fehle | PHP-Fortgeschrittene | 23 | 05.02.2006 13:02 | |
| Klasenname einer nicht instanziierten Klasse | DerDesian | PHP Tipps 2007 | 9 | 30.11.2005 13:13 |
| Instanz einer Klasse in einer anderen Klasse verwenden | Buhmann | PHP-Fortgeschrittene | 7 | 28.10.2005 23:12 |
| [Erledigt] Führerschein für Klasse A+B.. Preis OK??? | Off-Topic Diskussionen | 20 | 13.07.2005 18:44 | |
| Rückgabewert auf einer Klasse anders als in der Klasse | micbur | PHP Tipps 2005-2 | 6 | 10.06.2005 15:06 |
| Klasse holt sich die Klasse | PHP-Fortgeschrittene | 9 | 07.10.2004 11:53 | |
| error: Zugriff auf protected variable aus extendet klasse | PHP Tipps 2004 | 3 | 26.09.2004 23:39 | |
| Klasse ändern | UniQ | PHP Tipps 2004 | 5 | 24.08.2004 14:46 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php verweis auf aufrufende klasse, php aufrufende klasse, php aufrufende instanz, auf aufrufende klasse zugreifen, net auf eigenschaft aufrufende klasse zugreifen, php aufrufende klasse ausgeben, referenz auf aufrufende klasse, php referenz aufrufende instanz, php variable aufrufende klasse, auf andere klasse zugreifen php, php zugriff auf protected variablen, fields_array an nächste php übergeben, php in klasse aufrufende klasse zugreifen, auf aufrufende klasse verweisen, php aus klasse auf aufrufende klasse zugreifen, php zugriff auf __construct variable, php zugriff aus einer funktion auf eine variable vom __construct, php aufrufende funktion, aufrufende funktion php, function __construct zugriff |