Niente calendario dell’avvento per il 2010

Purtroppo quest’anno salterà l’ormai tradizionale occasione del calendario dell’avvento. Lo stesso Fabien ha confermato che, essendo lo sviluppo di Symfony2 ancora pressante e mancando ancora molta documentazione, non avrebbe senso. Probabilmente l’ipotesi di basarlo sulla versione 1 non è stata nemmeno presa in considerazione.
Un vero peccato: ricordiamo come la comunità italiana di symfony sia praticamente nata con il calendario dell’avvento del 2008 e si sia fortemente impegnata anche per quello del 2009. Sarà per l’anno prossimo.

task con progress bar

A volte può capitare di dover eseguire dei task che durano diversi minuti, per esempio per delle importazioni o per delle conversioni di grandi quantità di dati. In questi casi può essere molto utile avere nel terminale una barra di progressione, che indichi le quantità dei dati già lavorati e ancora da lavorare.
Questa piccola classe è stata scritta per sfruttare l’ottimo pacchetto Console_ ProgressBar di PEAR (non reinventare la ruota!)

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
<?php
 
/**
 * progressbar task
 *
 * PEAR's Console_ProgressBar is required.
 * If Console_ProgressBar is not installed, no bar is displayed and no error is given
 * @see http://pear.php.net/package/Console_ProgressBar
 *
 * Usage: extend this class instead of sfBaseTask in your task.
 *        in your execute() method, call $this->init() and then other methods
 *        where appropriate.
 *
 * @author  Massimiliano Arione
 */
abstract class progressbarTask extends sfBaseTask
{
  protected
    $bar,
    $hasBar = false;
 
  /**
   * initialize ProgressBar
   */
  protected function init()
  {
    $this->hasBar = @include_once 'Console/ProgressBar.php';
  }
 
  /**
   * start bar
   * @param integer $count total number of items
   */
  protected function start($count = 0)
  {
    if ($this->hasBar)
    {
      $this->bar = new Console_ProgressBar('[%bar%] %percent% %elapsed%', '=>', ' ', 90, $count);
    }
  }
 
  /**
   * update the bar
   * @param integer $step
   */
  protected function update($step)
  {
    if ($this->hasBar)
    {
      $this->bar->update($step);
    }
  }
 
  /**
   * erase the bar
   */
  protected function erase()
  {
    if ($this->hasBar)
    {
      $this->bar->erase();
      $this->log('');
    }
  }
}

L’utilizzo è molto semplice: basta richiamare il metodo init(), quindi ogni volta che serve barra di progressione richiamare start(), update() ed erase() rispettivamente prima, durante e dopo il ciclo. Al metodo update() va passato un contatore, che deve essere incrementato nel ciclo stesso.

Un anno senza ORM?

G9NGBH9YK85S
Se seguite questa discussione sul gruppo di Symfony su Linkedin avrete notato che è emersa una notizia abbastanza interessante.

The Doctrine 1.2 support seems to be extended to June, 1st 2011. But this post was written 11 months ago and I think the end of support was shortened…

Che affiancata al fatto che il supporto ufficiale a Symfony 1.x finirà il 31 dicembre 2012, fa evidenziare come per circa 1 anno e mezzo nessun ORM sarà ufficialmente supportato dal framework.

Che sia arrivato il tempo, per i progetti basati su symfony 1.x, di dare di nuovo un occhio a Propel?