Doctrine – viditelnost proměnných
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Dan Hundrt
- Člen | 74
Zdravím,
řeším momentálně Doctrine a viditelnost private proměnných.
Mám Entitu Articles.php v ní:
<?php
namespace App;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(options={"collate"="utf8_general_ci"})
*/
class Articles
{
/**
* @ORM\Id
* @ORM\Column(type="integer", unique=true)
* @ORM\GeneratedValue
*/
protected $id;
/**
* @ORM\Column(type="string", length=256)
*/
protected $title;
....
....
V prestenteru si vytáhnu Entity:
$this->template->article = $this->em->getRepository(Articles::class)->findAll();
Poté když chci procházet $article v latte:
<div n:foreach="$article as $art">
{dump $art->title}
</div
Laděnka vrátí:
Cannot access protected property App\Articles::$title
Teď mám dotaz, jak tohle řešit. Vygenerovat settery / gettery pro proměnné?
- Dan Hundrt
- Člen | 74
Díky za zprávu.
Gettery (podle zdejších příspěvků v diskuzi lepší řešení) si vygeneruju v IDE hromadně, jen mám dotaz, jak je vlastně použít spolu s Doctrine.
/**
* @return mixed
*/
public function getTitle()
{
return $this->title;
}
/**
* @param mixed $title
*/
public function setTitle($title)
{
$this->title = $title;
}
V latte:
$art->getTitle()
vrací to samé.
Díky moc za váš čas.
- Dan Hundrt
- Člen | 74
Ještě bych měl poslední dotaz – je lepší v presenteru používat Doctrine „surově“ metodu getRepository() nebo si pripravit vlastní vlastní v modelu?
Moje předpoklady pro psaní vlastních metod:
- Všechny metody na jednom místě
- Přehlednost, čistčí presentery
Zápory:
- „více psaní“