Anzeige - [Hier werben / Mediadaten]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
> PHP5: Wird *alles* per Referenz übergeben?
Josh
Geschrieben am: Do 19.07.2007, 11:03
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Moderatoren
Beiträge: 2142
Mitglied seit: 19.10.2003


Hallo alle

Ich weiss, dass seit dem neuen OOP Modell von PHP5 nun Objekte immer als Referenz übergeben werden, und nicht mehr als Kopien wie noch zu PHP4 Zeiten.
Wie schaut es aus mit anderen Variablentypen? Macht es einen Unterschied, ob ich

CODE
function myFunc($param) {}


oder

CODE
function myFunc(& $param) {}


schreibe?
Ganz allgemein: kann mit dem Verwenden von Referenzen bei Nicht-Objekten erheblich Performanz eingespart werden? Beim Verwenden von Objekten wohl schon, aber bei Nicht-Objekten? Lohnt sich der "Mehraufwand"?

Grüsse
Josh


--------------------
Mein letztes Projekt: Atelier-Schmuck.ch

"Das habe ich nie getan und werden es auch nie wieder tun!" :lol:
Top
PMEmail PosterUsers WebsiteICQ
Top
 
 
bowling-liga
#2 Geschrieben am: Do 19.07.2007, 11:56 (+00:53)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 66
Mitglied seit: 16.05.2007


Es macht immer noch einen Unterschied, auch wenn sich das Verhalten leicht geaendert hat. Wenn man sich folgendes Beispiel ansieht, erkennt man auch, warum es so sein muss ...

CODE

function retVar ($var) {
   return $var += 1;
}

function changeVar (&$var) {
   return $var += 1;
}

$num = 2;
retVar ($num);
echo $num; // immer noch 2

retVar (&$num); // erzeugt eine Warnung
echo $num; // $num ist jetzt jedoch 3

changeVar ($num);
echo $num; // jetzt ist $num 4


Cheers,
den.


--------------------
Top
PMEmail PosterUsers Website
Top
 
hatschi1810
#3 Geschrieben am: Do 19.07.2007, 14:21 (+02:25)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 638
Mitglied seit: 20.01.2004


>Ganz allgemein: kann mit dem Verwenden von Referenzen bei Nicht-Objekten erheblich Performanz eingespart werden?

Ich würde mal sagen es kommt darauf an ;-)

Wenn du einen Mega-Array bearbeitest und dann als return zurücklieferst wäre vielleicht by reference schneller. Man muss aber beachten das PHP copy-on-write benutzt, also eine Referenz benutzt solange die Werte nicht geändert werden. By Reference kann wenn man nichts ändert sogar langsamer sein.

Ansonsten finde ich diese Änderung von php4 auf php5 ziemlich arg, in größeren Programmen sind die folgen nicht ganz so leicht abzuschätzen. Da dann in php6 auch die Konstruktoren anders als in php4 gemacht werden müssen bin ich am überlegen ob wir den Wechsel bei uns nicht so lange rauszögern bis es eine stabile 6er Version gibt.
Top
PMEmail Poster
Top
 
Sascha Ahlers
#4 Geschrieben am: Do 19.07.2007, 18:14 (+03:52)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1701
Mitglied seit: 27.12.2004


Wer bitte setzt denn schon eine unstable oder testing auf einen Produktivsystem ein? ph34r.gif

IMHO sollte man so Programmieren, wie es sinn macht, ich versuche auf Referenzen zu verzichten, wenn diese nicht wirklich einen Sinn machen.


@hatschi1810
In wie fern soll sich denn der Konstruktur denn wieder anders gemacht werden als bei PHP 5? Also ich brauche den Konstruktur immer mit __construct (). Ich dachte nur der Aufruf eines neuen Objektes soll restriktiver sein, damit solche Konstruktionen wie "$Objekt = & new Objeckt();" verhindert werden.


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
hatschi1810
#5 Geschrieben am: Do 19.07.2007, 18:42 (+00:28)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 638
Mitglied seit: 20.01.2004


__construct () ist ja schon die php5-Variante, soweit ich weiß bleibt die, in php4 war ja noch eine function die gleich wie die Klasse heißt der Konstruktor, und das wird soweit ich weiß in php6 gestrichen.
Top
PMEmail Poster
Top
 
Sascha Ahlers
#6 Geschrieben am: Do 19.07.2007, 20:25 (+01:42)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1701
Mitglied seit: 27.12.2004


Kannst Du mir die Quelle dafür nennen? - Da im PHP Release Management Wiki davon nichts steht, halte ich es eher für ein Gerücht, insbesondere da andere Programmiersprache dies auch unterstützen und somit zumindenstens ein Quasistandard ist.


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
hatschi1810
#7 Geschrieben am: Do 19.07.2007, 20:42 (+00:16)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 638
Mitglied seit: 20.01.2004


Anscheinend hast du recht, die Entscheidung dürfte wohl so ausgefallen sein das die alte Form weiter unterstützt wird (Uralte Quelle : http://php6dev.blogspot.com/#old-type-constructors )
Am meisten bin ich ja auf die APC - Unterstützung gespannt.
Top
PMEmail Poster
Top
 
Sascha Ahlers
#8 Geschrieben am: Do 19.07.2007, 21:14 (+00:32)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1701
Mitglied seit: 27.12.2004


QUOTE (hatschi1810 @ Do 19.07.2007, 21:42)
[...] Am meisten bin ich ja auf die APC - Unterstützung gespannt.

Wieso gespannt? Probier sie doch aus!

http://www.php.net/APC
http://pecl.php.net/package/apc


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
Josh
#9 Geschrieben am: Fr 20.07.2007, 14:22 (+17:08)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Moderatoren
Beiträge: 2142
Mitglied seit: 19.10.2003


Besten Dank für die Antworten. :-)


--------------------
Mein letztes Projekt: Atelier-Schmuck.ch

"Das habe ich nie getan und werden es auch nie wieder tun!" :lol:
Top
PMEmail PosterUsers WebsiteICQ
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/19509

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Aus XING wird CROSS bendecho 638 10 Mo 1.12.2008, 19:24
Domainbewertungs-Homepage wird verkauft mister@ 210 1 So 16.11.2008, 15:33
wandfolie.de wird versteigert - sedo er-kuh-ix 92 0 Mi 12.11.2008, 00:55
[B] Webkatalog-Eintragung alles per Hand WebtoolMaster 99 0 Fr 10.10.2008, 12:49
alles-marketing.de ReginaD 504 16 Mi 1.10.2008, 16:08
Textkotze wird verkauft Tomi 621 14 Do 18.09.2008, 13:27
Webspezialist für (fast) alles! :) Webspecial 150 0 Mi 27.08.2008, 15:54
auch mein Domain-Portfolio wird gekürzt ... MarcoE 1710 25 Sa 23.08.2008, 15:30
Das AdSense-Empfehlungsprogramm wird eingestellt Gismo 507 7 Mo 11.08.2008, 12:59




Anzeige - [Hier werben / Mediadaten]



Anzeigen


[Hier werben / Mediadaten]