Uživatelské nástroje

Nástroje pro tento web


doctrine

Toto je starší verze dokumentu!


Doctrine 2

Knihovna pro objektově relační mapování v PHP.

Doctrine home page: http://www.doctrine-project.org/

Demo examples: http://doctrine.isn.cz/

Požadavky

  • miminálně PHP 5.3.0

Instalace pomocí Composeru

Protože mám v konfiguraci PHP (/etc/php.ini) volbu allow_url_fopen=Off, tak jsem do PHP CLI povolil hodnotu On pro stažení a instalaci.

Stažení

shell# mkdir -p /data/install/doctrine
shell# cd /data/install/doctrine
shell# curl -s http://getcomposer.org/installer | php -d allow_url_fopen=On

Vytvoření konfiguračního souboru pro Composer

Pro verzi Doctrine 2.3.4.

composer.json
{
    "require": {
        "doctrine/orm": "2.3.4"
    }
}

Instalace přes Composer

shell# php -d allow_url_fopen=On composer.phar install

Vrstvy

Common

Namespace: Doctrine\Common
Doc: http://docs.doctrine-project.org/projects/doctrine-common/en/latest/

  • Class Loading
  • Doctrine Annotations
  • Doctrine Caching

DBAL (DataBase Abstraction Layer)

Včetně Common.

Namespace: Doctrine\DBAL
Doc: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/

  • PDO
  • DQL (Doctrine Query Language)

ORM (Object-Relational Mapping)

Včetně Common a DBAL.

Namespace: Doctrine\ORM
Doc: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/

MySQL DB

Vytvoření MySQL databáze a nastavení oprávnění.

shell# mysql -p -u root
mysql> CREATE DATABASE doctrinedemo DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
mysql> GRANT ALL PRIVILEGES ON doctrinedemo.* TO doctrinedemo@localhost IDENTIFIED BY 'secretPassword';
mysql> FLUSH PRIVILEGES;
mysql> QUIT;

Příprava a konfigurace

Přejít do adresáře projektu.

shell# mkdir -p lib/doctrine
shell# cp -r /data/install/doctrine/vendor ./lib/doctrine
doctrine-load.php
<?php
// bootstrap.php
require_once './lib/vendor/autoload.php';
 
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
 
$paths = array('./lib/entities');
$isDevMode = false;
 
// the connection configuration
$dbParams = array(
    'driver'   => 'pdo_mysql',
    'user'     => 'doctrinedemo',
    'password' => 'secretPassword',
    'dbname'   => 'doctrinedemo',
);
 
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);
?>

Entity

entities/User.php
 
create.sql
-- -----------------------------------------------------
-- Table `doctrinedemo`.`user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `doctrinedemo`.`user` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `firstname` VARCHAR(45) NULL,
  `lastname` VARCHAR(45) NULL,
  `login` VARCHAR(45) NOT NULL,
  `password` VARCHAR(64) NOT NULL,
  `description` TEXT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;
doctrine.1380834432.txt.bz2 · Poslední úprava: 2023/12/26 19:13 (upraveno mimo DokuWiki)