php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.12.2006, 15:38  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Wir mussten so einen kaufen, und das war damals nicht gerade billig. Der Witz an der Sache war nur das dieser auch nicht im ABI zugelassen war, somit hatten wir keinerlei Nutzen davon. Immerhin ging die ein oder andere Stunde dadurch schneller vorbei
mAy^daY ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.12.2006, 15:39  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

In PHP5 werden Objekte automatisch als Referenz übergeben.
Bei allen anderen Datentypen musst du das explizit angeben:
PHP-Code:
<?php
function &returnByReference(&$argumentByReference)
{
  
//..
}
?>
Aus dem Stehgreif weiß ich jetzt nicht, wie das beim Funktions-Rückgabewert per Referenz gehandhabt wird. Ich nehme an, der Speicher wird dann beim Funktions-Ende für diese Variable eben nicht gereinigt.

PHP-Code:
<?php
function &returnByReference()
{
  
// ..
  
return new myObject();
}
?>
..geht soweit ich weiß nicht, da musst du dann schon
PHP-Code:
<?php
$oMyObj 
= new myObject();
return 
$oMyObj;
?>
schreiben.

Aber schlag dich nicht zu sehr damit rum und setze Referenz-Übergaben nur dann ein, wenn du genau weißt was du tust und wenn es sich wirklich lohnt.
Zergling-new ist offline  
Alt 01.12.2006, 15:53  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Zitat:
Zitat von Zergling
In PHP5 werden Objekte automatisch als Referenz übergeben.
[...]
Aber schlag dich nicht zu sehr damit rum und setze Referenz-Übergaben nur dann ein, wenn du genau weißt was du tust und wenn es sich wirklich lohnt.
Danke für die Antwort, anfangs stand ich da etwas auf dem Schlauch da ich es ehr von C/C++ gewohnt bin mit Zeigern zu arbeiten.
Meine kleinen Scripte werde ich dann wohl weiterhin ehr bequem ohne Referenzaufrufe gestalten, zumal der Speicher den ich zur verfügung habe mehr als ausreichen sollte.
mAy^daY ist offline  
Alt 04.12.2006, 14:31  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Zitat:
Zitat von Zergling
In PHP5 werden Objekte automatisch als Referenz übergeben.
Bei allen anderen Datentypen musst du das explizit angeben:[...]
Meine Methoden erwarten bisher meistens ein Object als Input.

Kleines Beispiel:
PHP-Code:
// ...
class beispiel {
  function 
add_xyz($d) {
    
$d->DATUM = (is_null($d->DATUM))?'NULL':'"'.date("Y-m-d H:i:s"$d->DATUM).'"';
    
$query 'INSERT tabelle (datum) VALUES ('.$d->DATUM.')';
    
$this->sql_query($query);
    return 
0;
  }
}


// ...

// Aufruf dann irgendwo im Script
$_beispiel->add_xyz($d); 
Ist es irgendwie möglich dies zu unterbinden das Objekte als Referenz übergeben werden?

So werden dann nämlich meine Original-Daten geändert und diese brauche ich noch.

Gruß mAy
mAy^daY ist offline  
Alt 04.12.2006, 14:38  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Hätte man drauf kommen können, wobei ich denke, dass man bei einer sauberen Programmierung eigentlich nicht in die Lage kommen sollte Objekte kopieren zu müssen ^^

Übrigens lässt es sich bei dir recht einfach "korrigieren":
PHP-Code:
class beispiel {
  function 
add_xyz($e) {
  
$d = clone $e
// usw 
Aussagekräftige Variablenbezeichner wären übrigens cool ^^
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 04.12.2006, 14:47  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Danke dir, auf clone hätte ich eigentlich kommen müssen

Zitat:
Zitat von KingCrunch
Aussagekräftige Variablenbezeichner wären übrigens cool ^^
$d = $daten ^^
mAy^daY ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php gibt speicher nicht frei

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.