Widgets

上週翻到的一個 Zend.com Webinar,主題是「Zend Framework v1 + Doctrine v2」(免費註冊成為 Zend.com 會員後登入即可觀看)。

開頭先是幾位講者們的自我介紹,接著以 doctrine project 做開場,走過 DBAL (Database Abstraction Layer) 和 ORM (Object Relational Mapper) 之後,(嗯,剛開頭影片中投影片的程式碼排版很詭異地混亂!),帶一下 doctrine v1 和 doctrine v2 之間的差異:「No more base class required」、「Values stored in object properties」、「Persistence is done transparently」,因此多了個「EntityManager ($em)」來存取資料物件。

這裡有個比較清晰的版本可以搭配著看:


DQL (Doctrine Query Language) 也是介紹的重點之一,DQL 是一種物件查詢語言,跟 HQL (Hibernate Query Language)、JPQL (Java Persistence Query Language) 很接近。把它當作是個 object database 即可,是差不多的意思 :p

定期要跑一下 flush() 和 clear() ,範例:「Bulk Inserts with Domain」
$batchSize = 20;
for ($i = 1; $i <= 10000; ++$i) {
  $user = new User;
  $user->setStatus('user');
  $user->setUsername('user', $i);
  $user->setName('Mr.Smith-', $i);
  $em->persist($user);
  if ($i % $batchSize == 0) {
    $em->flush();
    $em->clear(); // Detaches all objects from Doctrine! 這個會清掉全部物件資料,清出記憶體空間
  }
}

Webinar 中間開始,是一段 DEMO time,會從頭開一個新的 Zend Framework project,一路走到用 Controller 做基本的 CRUD。(http://github.com/ralphschindler/NOLASnowball)


0 Comments:

Post a Comment

 
Top