+ All Categories
Home > Technology > PHP Evening #1 - Propel ORM [Martin Sojka]

PHP Evening #1 - Propel ORM [Martin Sojka]

Date post: 16-Apr-2017
Category:
Upload: pehapkari
View: 77 times
Download: 0 times
Share this document with a friend
20
PHP Evening #1 Propel ORM Martin Sojka @sojki
Transcript

Edgedesign, Net Magnet

České Budějovice, Český Krumlov

Backend developer

Intro◉ Co to je? Koho to vůbec zajímá?◉ Jako to dostat do (nejen) Symfony?◉ Umí to něco?◉ Co Propel umí ve skutečnosti.◉ Co Propel neumí, proč je naprd.◉ Otázky nakonec.

Co to je?

https://goo.gl/3IeuCd | http://martinfowler.com/bliki/OrmHate.html

ORM V PHP * - Doctrine 17M- Propel 800 k- Redbean 250 k- Eloquent- Rozdíly

https://goo.gl/h2RMdB | http://www.mehdi-khalili.com/orm-anti-patterns-part-1-active-record/

https://goo.gl/EnNRer | http://www.vertabelo.com/blog/technical-articles/side-by-side-doctrine2-and-propel-2-comparison

* dle packaigist

Co má Propel stejné jako Doctrine

◉ Výborná dokumentace◉ Symfony bridge

Co jde lépe

◉ IDE friendly◉ Učící křivka

Hlavní rozdíl *

1 2 3 4

1 2 3 4

time

* Propel v týdnech, Doctrine v měsících

Propel je dvakrát menší, ale v základu již obsahuje vše potřebné, např. migrace, behaviors...

A co na to Propel sám?

http://sandbox.propelorm.org/example/i18n - Vyzkoušejte Propel v sandboxu, bez nutnosti cokoli instalovat

Jak se Symfony?

- $ composer create project symfony/standart-edition-nebo-tak-něco ./

- $ composer require propel/propel:2.0.0-alpha6@dev propel/propel-bundle:~3.0@dev

- V AppKernel.php přidejte PropelBundle new Propel\Bundle\PropelBundle\PropelBundle(),

- Přidejte propel section do config.yml (viz. Odkaz níže)

- Vytvořte schema.xml v /src/AppBundle/Resources/config/schema.xml ve schématu

nezapomenout nastavit namespace (musí v něm být Bundle aby se to třídy správně

vygenerovaly, jinak se generují do rootu).

- $ bin/console propel:sql:build && bin/console propel:sql:insert

- Volitelně: Odstranit doctrine :) (composer, AppKernel a config.yml)

https://goo.gl/dLzzft | http://propelorm.org/documentation/cookbook/symfony2/working-with-symfony2.html

Basic usage

- Dokumentace- Propel ORM sandbox- CRUD

http://propelorm.org/documentation/03-basic-crud.html

Performance

Uložení 2000 položek, prostá entita bez vazeb se třemi atributy

Process memory usage - peak MB

Propel - basic 328

Doctrine - same code 330.6

Doctrine - with clear 325.6

Doctrine - with end-flush 330.6

Data-mapper/unit of work je v Propel branch plánovaná pro release 2.0.0, do té doby bude Propel stále alpha, bez ohledu na to jak stabilní je. Dokud bude v Propel Active record, nevyjde release 2.0.0.

Batteries included

- Migrations- Behaviors- Hydrators- Exporters- Form generator (v Bundle)- ...

Sample project with sample model and data

- Working with ants- Sample queries- Behaviors show case

- Import from CSV- Export to CSV, Export to XML- Working with JSON example

https://gist.github.com/sojki/9863039d922798fc9c3b933b28faaaf6

Je libo JSON?

$json = <<<JSON

{

"foo" : "bar",

"bar" : {

"subkey" : "value"

}

}

JSON;

$query->where('content->"$.bar.subkey" = "value"');

<column name="content" type="varchar" sqlType="json" />

Temná stránka

◉ Stále pouze alpha, @dev stability (viz. odkaz níže)◉ BC breaks◉ Data mapper branch, unit of work◉ Komunita není tak velká, jako u Doctrine

goo.gl/EzKwXX | http://propelorm.org/blog/2015/06/27/propel2-current-state-and-future.html

“Díky, že jste to vydrželi”

Martin Sojka

@sojki


Recommended