Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 
 
Objekte klonen: Seite 1

SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an. Weitere Informationen



Das durch die Zend Engine 2 veränderte Objektreferenzverhalten führt dazu, dass man stets eine Referenz auf eine Ursprungsklasse erzeugen kann und niemals eine Kopie eines Objekts samt Eigenschaften erhält. Wenn man komplexe Datenstrukturen hat und eine Klasse A erzeugt, die im weiteren Verlauf noch benötigt wird, es aber zusätzlich noch eine Klasse B gibt, die eine Kopie benötigt, um damit einzelne Teile der Objektstruktur zu bearbeiten, ohne dabei die Ursprungsinstanz der Klasse A zu verändern, spielt das neu eingeführte Klonen von Objekten eine bedeutsame Rolle. Hierdurch erhält man sämtliche Eigenschaften des Ursprungsobjekts, inklusive aller Referenzabhängigkeiten.

Wird nun eine Kopie eines Objekts benötigt, kann diese Kopie mithilfe von clone erzeugt werden. Ein Objekt wird nach dem Aufruf von clone $objekt geklont.

Beispiel

<?php

class Fahrzeug
{
  function __construct($typ)
  {
    $this->name  = $typ;
  }
  function ProduziereFahrzeug($obj, $name)
  {
    $obj->name = $name;
  }
}

$mobil = new Fahrzeug("PKW");
$neues_mobil = clone $mobil;

$neues_mobil->ProduziereFahrzeug($neues_mobil, "Fahrrad");

// Ausgabe – PKW
echo $mobil->name;
// Ausgabe – Fahrrad
echo $neues_mobil->name;

echo "Original Objekt:\n";
print_r($mobil);
echo "\n\n";
echo "Geklontes Objekt:\n";
print_r($neues_mobil);

?>

Ausgabe
PKW
Fahrrad

Original Objekt:
Fahrzeug Object
(
    [name] => PKW
)


Geklontes Objekt:
Fahrzeug Object
(
    [name] => Fahrrad
)

Sollen sämtliche Objekteigenschaften geklont werden, dann wird zu allererst überprüft, ob Sie die __clone()-Methode selbstständig definiert haben, um das Klonen selbst zu übernehmen. In diesem Fall sind Sie dafür verantwortlich, die notwendigen Eigenschaften im erzeugten Objekt zu deklarieren. Sollte dies nicht der Fall sein, wird die interne Methode __clone(), über die sämtliche Klassen verfügen, für dieses Objekt ausgeführt, die sämtliche Objekteigenschaften dupliziert. Bei einer abgeleiteten Klasse kann die __clone()-Methode der Elternklasse mit parent::__clone() verwendet werden.

Beispiel

<?php

class Lebewesen
{
  public $name = "";
  
  function __construct()
  {
    $this->name  = "Zelle";
  }
  function __clone()
  {
    $this->name = "Klon-Zelle";
    echo "Ich wurde geklont: ";
  }
}

class Menschen extends Lebewesen
{
  function __construct()
  {
    parent::__clone();
  }
}


$objekt = new Menschen();
print_r($objekt);

?>




OOP – Rundgang
 




:: Premium-Partner ::

Webhosting/Serverlösungen

PSW GROUP GmbH & Co. KG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Sedo GmbH weitere Sponsoren
 


:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


MySQL-Backup über die Shell

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


COPPA-Abfrage für Altersbeschränkung

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2024 E-Mail SELFPHP Inh. Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2024 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de