AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Klasseninstanzen in PHP

Ein Thema von 3_of_8 · begonnen am 3. Jun 2006 · letzter Beitrag vom 13. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#1

[PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 02:34
Morgen. Ich erzeuge mir eine Klasse, und will im Konstruktor eine Referenz auf die Instanz in ein globales Array speichern, in etwa so:

Code:
global $objects;

class MyClass {

  public $title;

  function MyClass($title) {
    $this->title=$title;
    $GLOBALS["objects"][$title]=&$this;
  }

}
Das wäre jetzt meine Idee gewesen. Funktioniert aber nicht. Die =& Anweisung hat überhaupt keinen Effekt. Wenn ich statt =& schreibe = funktioniert es zwar scheinbar, aber ich habe ein Kopie und keine Referenz.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von titus
titus

Registriert seit: 5. Apr 2004
Ort: Freiburg
232 Beiträge
 
#2

Re: [PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 02:47
Was bitte willst du denn da machen? Ich versteh denn Sinn davon nicht ganz

mfG, titus
Daniel L.
'-'
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 02:52
Sollte der Konstruktor nicht __construct($title) heissen?
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Benutzerbild von titus
titus

Registriert seit: 5. Apr 2004
Ort: Freiburg
232 Beiträge
 
#4

Re: [PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 02:58
Naja in PHP5 aber in PHP4 ging es noch so:

new MyClass(...);

mfG, titus
Daniel L.
'-'
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 10:53
Also der Konstruktor wird zumindest aufgerufen. Soweit scheints noch zu passen.

Ich will einfach, dass bei der Instantiierung der Klasse ein Pointer auf die Instanz in ein globales Array gespeichert wird. Der Grund ist, dass ich die Instanzen der Klasse verwalten will.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#6

Re: [PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 11:26
Zitat von 3_of_8:
Die =& Anweisung hat überhaupt keinen Effekt. Wenn ich statt =& schreibe = funktioniert es zwar scheinbar, aber ich habe ein Kopie und keine Referenz.
Welchen Wert hat denn $objects[$title] danach? Vielleicht bringt die Lektüre des Handbuchs (und zwar weiter als nur das erste Code-Beispiel) ein wenig Erleuchtung.
  Mit Zitat antworten Zitat
7eddi

Registriert seit: 3. Jun 2006
4 Beiträge
 
#7

Re: [PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 11:30
Also bei mir funktioniert beides, mit und ohne Referenzierung mit &.

Code:
<?php

  header('Content-type: text/plain');

  $objects = array();
 
  class MyClass {
    public $title;
   
    function MyClass($title) {
      $this->title = $title;
      $GLOBALS['objects'][$title] = $this; # bzw. &$this
    }
  }
 
  $myobj = new MyClass('A');
 
  # Objekt verändern
  $objects['A']->title = 'B';
 
  # Objekt-Eigenschaften ausgeben
  echo $myobj.': '.$myobj->title."\r\n";
  echo $objects['A'].': '.$objects['A']->title;

?>
Beidesmal spuckt mir das Script:

Object id #1: B
Object id #1: B

aus. Mich würde aber trotzdem mal interessieren, was bei der Zuweisung von $this nun eigentlich passiert. In Delphi hätte ich jetzt gesagt: Ist doch klar, $this ist ja schon ein Zeiger auf das Objekt, deswegen braucht man das auch nicht zu referenzieren... In PHP bin ich mir grad nicht so sicher .
  Mit Zitat antworten Zitat
7eddi

Registriert seit: 3. Jun 2006
4 Beiträge
 
#8

Re: [PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 12:24
Das Handbuch hilft schonmal weiter , zumindest wenn man auch den letzten Kommentar von aib liest.

Zitat:
Note that the "new" operator no longer returns a copy of the constructed object, but the object itself. This behavior may be as of PHP 5.x.

This means that
$foo = new class();
and
$foo =& new class();
are equivalent now, and you don't have to worry about the problems stated on this page.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: [PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 12:57
Ja, und? Mein Problem bleibt trotzdem bestehen. Mein Code sieht ja in etwa so aus:

$a = new a();

Jetzt will ich, dass im Konstruktor eine Referenz auf das erzeugte Objekt in das Array gespeichert wird.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#10

Re: [PHP] Klasseninstanzen in PHP

  Alt 3. Jun 2006, 13:37
Ja, und?

Code:
$a = new a();
$objects[] = &$a;
Happy? Ich glaub dass du mit dem $this-Operator nicht so einfach & verwenden kannst.

Greetz
alcaeus

PS: Es ist = &$a, und nicht =& $a. Das & gehoert zu $a, und nicht zum =.
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz