Mailinglisten-Archive |
Hi Daniel, On Tue, Dec 12, 2000 at 11:27:09AM +0100, Daniel Beulshausen wrote: > At 02:07 12.12.2000 +0100, you wrote: > >Die Implementierung als explizite "Referenz-Zuweisung" find' > >ich etwas kurzsichtig. (Sonst reiten die Sprachentwickler > >doch auch auf der C(++)-Welle, warum nicht hier auch?) > > & ist einfach kein operator, es gibt keine pointer wie in c. möglich ist: ja, das hatte ich ja wohl auch festgestellt. Ich moechte ja auch gar keine Pointer (baeh, baeh, baeh), sondern nur die Moeglichkeit Referenzen als "first class Datentyp" benutzen zu koennen. Man *muss* das nicht haben, aber es ist in vielen Faellen sehr handlich. > $foo1 =& $foo2 ^^^^ Es gibt halt einen '=&'-Operator. Das gemeine ist, dass im Handbuch die Schreibweise $foo = &$bar verwendet wird, welche die Existenz eines Referenz-Operators "&" vermuten laesst. > function &foo(); *Wenn* Referenzen auch explizit benutzt werden koennten, waere diese Sondersyntax nicht notwendig. > function foo(&foo) ok. call-by-reference; aber das gab's ja schon frueher und gehoert IMHO nicht zum Kern der 'hier' diskutierten Problematik. > > was imo auch völlig ausreichend ist :) :) ... fuer geeignete Definitionen von ausreichend :) > http://marc.theaimsgroup.com/?l=php-dev&m=97500895222948&w=2 > http://php.net/manual/language.references.php ah, jetzt, ja: Updated Tue, 12 Dec 2000 <smile> *So* aktuell ist unser lokaler Spiegel des Handbuchs natuerlich nicht :) Nach dieser Lektuere weiss ich nun aber zumindest wie (und warum) die Entwickler diesen Weg verfolgt haben. Wirklich gut finde ich das allerdings nicht, da die Orthogonalitaet der PHP-Syntax darunter leidet. Insbesondere die Notwendigkeit von $foo =& pingpong(); mit &function pingpong(){[...]; return $bar;} will mir einfach nicht wirklich einsichtig werden. Das liegt aber wohl daran, dass ich mich an das "Bind-by-name"-Konzept noch gewoehnen muss. (Echte Referenz [nicht Pointer!] Semantik waere wir lieber ...) Ich werde darueber nochmal meditieren muessen ;) > ja, du hast recht. ich sehe gerade das der unterausdruck evaluiert wird, > dann wäre der weg über if/else am "schönsten". Aber genau if/then/else moechte man fuer so simple Fallunterscheidungen ja vermeiden. > >Wirklich aergerlich finde ich, dass somit (im Moment) > >auch kein direktes "return &$myObject" moeglich ist. > >Stattdessen muss man ein wenig elegantes > >$tmp = &$myObject; return $tmp; > >verwenden. jau. Da hab' ich mich verrannt; voelliger Bloedsinn der Satz. Kaum lag' ich kurze Zeit nach dem Verfassen der Mail im Bett, fiel mir auf, was ich fuer einen Bloedsinn geschrieben hatte. Diese Art der Referenz-Rueckgabe kann (bei aktueller Referenz- Semantik) aus demselben Grund nicht funktionieren, wie auch der "?"-Fall versagt. $tmp enthaelt ja nicht die Referenz als Wert, sondern 'ist' eine Referenz auf denselben Wert wie $myObject. Sobald '$tmp' (im Rahmen des return-Statements) ausgewertet wuerde, wuerde wieder eine echte Kopie des Objektes zurueckgegeben. Das hatten wir bei ersten Tests auch festgestellt und die Rueckgabe von Referenzen damit zunaechst zu den Akten gelegt. > lies nochmal http://php.net/manual/language.references.return.php IIRC gab's das zur Zeit unserer ersten Referenz-Experiment noch nicht. (Kann das sein oder wurde das alles 'gleichzeitig' eingefuehrt?) -Andreas -- : Anti-Spam Petition: http://www.politik-digital.de/spam/ : : PGP-Key: http://www.tse-online.de/~ab/public-key : : Key fingerprint: 12 13 EF BC 22 DD F4 B6 3C 25 C9 06 DC D3 45 9B :
php::bar PHP Wiki - Listenarchive