arrayCollection et deep clone
Bonjour,
voilà j'aimerais comprendre pourquoi l'un de mes attributs qui est de type ArrayCollection n'est pas considéré comme un array() ?
en fait je voudrais à la base, faire un clone d'un resultat de query_builder. j'ai une entité "application" qui possède un attribut "docs" qui est en relation OnetoMany et de type arrayCollection :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
<?php
namespace yiBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Application
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="yiBundle\Entity\ApplicationRepository")
*/
class Application
{
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="yiBundle\Entity\DocApplication", mappedBy="application",cascade={"persist"})
*/
private $docs;
/**
* Add docs
*
* @param \yiBundle\Entity\DocApplication $docs
* @return Application
*/
public function addDoc(\yiBundle\Entity\DocApplication $docs)
{
$this->docs[] = $docs;
return $this;
}
/**
* Remove docs
*
* @param \yiBundle\Entity\DocApplication $docs
*/
public function removeDoc(\yiBundle\Entity\DocApplication $docs)
{
$this->docs->removeElement($docs);
}
/**
* Get docs
*
* @return ArrayCollection
*/
public function getDocs()
{
return $this->docs;
}
/**
* Constructor
*/
public function __construct()
{
$this->docs = new ArrayCollection();
}
function __clone()
{
echo dump($this->docs);
$mClone = new ArrayCollection();
if (is_array($this->docs)){
foreach ($this->docs as $item) {
$itemClone = clone $item;
$itemClone->setA($this);
$mClone->add($itemClone);
}
$this->docs = $mClone;
}
else{
echo 'not an array <br/>';
}
}
} |
mais lorsque j'essaie d'implémenter la méthode __clone(), cela ne fonctionne pas, à la place s'affiche le resultat de la boucle else.
pourriez-vous m'expliquer pourquoi svp ? j'ai beau chercher partout je ne comprend pas...
merci