Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Doctrine Project

Doctrine Project

Ao contrário do que todo mundo pensa, o Doctrine não é somente um Mapeador de objeto relacional. É um projeto focado em desenvolver soluções para persistência de dados e tecnologias relacionadas. Nessa palestra você verá o uso de várias ferramentas que fazem o uso de pacotes do projeto que serão úteis no seu ambiente desenvolvimento desde a implementação ao deploy.

Daniel Lima

April 13, 2013
Tweet

More Decks by Daniel Lima

Other Decks in Programming

Transcript

  1. Eu! • Daniel Lima – @yourwebmaker – fb.com/dlpinheiro – Arquiteto

    de aplicações na – Produtor musical & DJ – Biker – Skater – Drunk – ...
  2. Agenda • O que é o Doctrine na verdade? –

    O projeto – Libs: • ORM • ODM: MongoDB, CouchDB • DBAL: Migrations • Common: Annotations, Cache, Data Fixtures, Inflector • Doctrine e outros projetos
  3. O Projeto • O que é o Doctrine na verdade?

    – “The Doctrine Project is the home of a selected set of PHP libraries primarily focused on providing persistence services and related functionality. Its prize projects are a Object Relational Mapper and the Database Abstraction Layer it is built on top of.” - http://www.doctrine-project.org/
  4. Colaboradores • Guilherme Blanco …. Éééééé do Brasilll!!!! • Jonathan

    H. Wage • Benjamin Eberlei • Bulat Shakirzyanov • Fabien Potencier • Roman S. Borschel • ….... Você!
  5. ORM: Mapeador de Objeto Relacional • É a lib mais

    conhecida pela comunidade • Facilita o desenvolvimento voltado ao Domínio (problema) da aplicação • Aproxima o modelo entidade-relacionamento ao modelo Orientado a Objetos • Não é necessário escrever SQL • Não é esse MONSTRO todo que pensam... • RTFM!!!
  6. ORM: Mapeador de Objeto Relacional Passo a passo comum: –

    Crie suas tabelas – Crie suas classes – Mapeie suas classes – Instancie suas classes – Salve seus objetos – Traga seus objetos salvos
  7. Mapeie suas classes • Classe “Usuario” mapeada – https://gist.github.com/yourwebmaker/5369280#fil e-usuario-php

    • Classe “Grupo” mapeada – https://gist.github.com/yourwebmaker/5369280#fil e-grupo-php
  8. ODM: Mapeador para No-SQL • Mesmo “Conceito” do ORM, mas

    trabalha somente com bancos No-Sql • Oferece funcionalidades extras que os Clients No-Sql não oferecem: – Event Manager – EntityRepositories – Herança • MongoDB, CouchDB, OrientDB... • O projeto Doctrine\KeyValueStore pretende padronizar o uso de bancos No-Sql.
  9. DBAL: Data Base Abstraction & Access Layer • Camada de

    abstração de banco de dados sobre a PDO • Oferece funcionalidades extras à PDO • ORM faz uso da DBAL
  10. DBAL: Alguns Recursos extras à PDO • Tipos – CREATE

    DOMAIN MyMoney AS DECIMAL(18,3); – Definindo um tipo: https://gist.github.com/yourwebmaker/7a61f175c7 59cf00096d#file-moneytype-php – Adicionando um tipo:
  11. Common\Annotations • /** * @var * @todo * @Entity(repositoryClass=”XRepository”) *

    @ORM\Entity * @Assert\NotBlank() */ • "Annotations provide data about a program that is not part of the program itself. They have no direct effect on the operation of the code they annotate." Oracle • São como arquivos de configuração
  12. Common\Cache • ApcCache (requires ext/apc) • ArrayCache (in memory, lifetime

    of the request) • FilesystemCache (not optimal for high concurrency) • MemcacheCache (requires ext/memcache) • MemcachedCache (requires ext/memcached) • PhpFileCache (not optimal for high concurrency) • RedisCache.php (requires ext/phpredis) • WinCacheCache.php (requires ext/wincache) • XcacheCache.php (requires ext/xcache) • ZendDataCache.php (requires Zend Server Platform)
  13. DBAL\Migrations • “The Doctrine Migrations offer additional functionality on top

    of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and powerful tool.” • Instale na munheca... ou... use o PHAR! • 1000000x.... USE O PHAR!
  14. DBAL\Migrations $ ./doctrine migrations:status == Configuration >> Name: Doctrine Sandbox

    Migrations >> Database Driver: pdo_mysql >> Database Name: testdb >> Configuration Source: /Users/jwage/Sites/doctrine2git/tools/sandbox/migrations.xml >> Version Table Name: doctrine_migration_versions >> Migrations Namespace: DoctrineMigrations >> Migrations Directory: /Users/jwage/Sites/doctrine2git/tools/sandbox/DoctrineMigrations >> Current Version: 2010-04-16 13:04:22 (20100416130422) >> Latest Version: 2010-04-16 13:04:22 (20100416130422) >> Executed Migrations: 0 >> Available Migrations: 1 >> New Migrations: 1 == Migration Versions >> 2010-04-16 13:04:01 (20100416130401) not migrated
  15. DBAL\Migrations $ ./doctrine migrations:migrate --dry-run Are you sure you wish

    to continue? y Executing dry run of migration up to 20100416130452 from 0 >> migrating 20100416130452 -> CREATE TABLE users (username VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL) ENGINE = InnoDB
  16. DBAL\Migrations $ ./doctrine migrations:migrate 0 Are you sure you wish

    to continue? y Migrating down to 0 from 20100416130422 -- reverting 20100416130422 -> DROP TABLE addresses -- reverted -- reverting 20100416130401 -> DROP TABLE users -- reverted
  17. Doctrine e outros projetos • Symfony – Validators – Router

    • Zend Framework 2 • Zend Framework 1 • JSM\Serializer • DMS\Filter • SuaSempresa\SuaLib
  18. Como obter ajuda? • Google Groups: – Doctrine-user – Doctrine-dev

    – Doctrine-BR • IRC – irc.freenode.net/doctrine – irc.freenode.net/doctrine-dev – irc.freenode.net/doctrine-mongodb-odm • LEIA O MANUAL DE CABO A RABO!