Symfony 1.3

W ubiegłym tygodniu ukazała się wersja 1.3 alpha znakomitego frameworka Symfony. Z pewnością nie uświadczymy rewolucji podobnej do tej w momencie ukazania się sf 1.1 i 1.2, jednak liczne drobne zmiany jakie wprowadzono powinny dość znacząco usprawnić naszą prace - pełna lista zmian dostępna jest tutaj. Wersja 1.3 podobnie jak 1.1 ma być jedynie wersją przejściową do 1.4, która ma się ukazać dopiero w 2010 roku i która będzie wspierana do 2013.


Poniżej krótka lista najważniejszych wg mnie zmian:

- E-mail. Dodano domyÅ›lny system odpowiadajÄ…cy za wysyÅ‚anie e-maili oparty o SwiftMailer 4.1. Nie miaÅ‚em okazji testować tego mailera, także nie mogÄ™ podać żadnych konkretnych argumentów “za”, bÄ…dź “przeciw”. Wiem natomiast, że nowym Project Managerem tego projektu zostaÅ‚ Fabien Potencier, także o jego dalszy rozwój i wsparcie możemy być spokojni. Do tej pory w swoich projektach z powodzeniem wykorzystywaÅ‚em Zend_Mail, a SwiftMiailera postaram siÄ™ przetestować przy najbliższej okazji. Poniżej przykÅ‚ad wykorzystania zintergorwanego z Symfony SwiftMailera:


<?php

$message = $this->getMailer() ->compose('od@przyklad.pl', 'do@przyklad.pl', 'Temat wiadomości', 'Treść')->attach(Swift_Attachment::fromPath('/sciezka/do/pliku'));

$this->getMailer()->send($message);

?>

- Doctrine jako domyślny ORM. Pomimo tego, że pomału przekonuję się do tego ORMa, w większych projektach wciąż zostaje przy Propelu - budowanie zapytań z wykorzystaniem obiektów Criteria bardziej przypadło mi do gustu. Wg zapowiedzi wsparcie dla Propela ma się zakończyć wraz z pojawieniem się sf 2.0, jednakże ostatnio przewodzenie na projektem Propel objął François Zaninotto (były pracownik Sensio, autor wielu pluginów i części dokumentacji), co mam nadzieje zaowocuje reaktywacją projektu (wersja 1.4 ma ukazać się w  październiku). Wracając do samego Doctrine - dodano nowe opcje dla definiowania struktury bazy danych w pliku YAML, a także nowe komendy dla generatorów (m.in: doctrine:build, doctrine:reload-data, doctrine:create-model-tables, doctrine:delete-model-tables, doctrine:clean-model-files).

- Formularze. Przede wszystkim dodano metodę useFields (mój odopwiedniki unsetAllExcept, przykład poniżej), klasy: BaseForm (klasa nadrzędna dla wszystkich formularzy) i sfFormSymfony (przydatna przy implementacji zdarzeń na formularzach). Ponadto dodano brakujące metody takie jak: setDefault(), setLabel(), setIdFormat(), setHidden() dla komponentów wykorzystywanych w formularzach.


<?php
  class UserForm extends BaseUserForm
  {
    public function configure()
    {
      $this->useFields(array(
        'name',
        'surname',
        'email'
      ));
    }
  }

?>

- innym ciekawym dodatkiem do nowej wersji sf jest możliwość tworzenia wÅ‚asnego skryptu instalatora. By tego dokonać należy podczas tworzenia nowego projektu użyć opcji –installer i zadać odpowiedni parametr skryptu (przykÅ‚ad poniżej).

Z poziomu wiersza poleceń:


    php symfony generate:project --installer=custom_installer.php

PrzykÅ‚adowy skrypt instalatora (na podstawie “Symfony 1.3 + Doctrine 1.2″):


  if (!$this->askConfirmation('Czy jestes pewien, ze chcesz rozpoczac instalacje?')) {

    return ;
  }

  $this->installDir(dirname(__FILE__) . '/skeleton');

  $this->runTask('plugin:publish-assets');

  $validator = new sfValidatorEmail(array(), array('invalid' => 'Podano nie prawidlowy adres e-mail'));

  $email = $this->askAndValidate('Prosze podac swoj adres e-mail:', $validator);

  $this->runTask('configure:author', sprintf("'%s'", $email));

  $secret = $this->ask('Prosze podac unikalny ciag znakow dla ochrony CSRF:');

  $this->runTask('generate:app', 'frontend --escaping-strategy=true --csrf-secret=' . $secret);

  $this->runTask('plugin:install', 'sfDoctrineGuardPlugin');

  $this->reloadTasks();

  $this->runTask('guard:create-user', 'kamil haslo');

  $this->runTask('clear:cache');

Migracja do nowej wersji nie powinna przysporzyć problemów - instrukcja dostępna jest na stronie projektu.

1 Response to “Symfony 1.3”


  1. 1 Piotr

Leave a Reply

PodglÄ…d komentarza:




About me:

  • PHP programmer
  • Symfony developer
  • Zend framework developer

Categories: