SlideShare a Scribd company logo
1 of 20
Download to read offline
PHP Evening #1
Propel ORM
Martin Sojka
@sojki
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 PropelBundlePropelBundlePropelBundle(),
- 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

More Related Content

More from Péhápkaři

Startup vs korporace vs Previo
Startup vs korporace vs PrevioStartup vs korporace vs Previo
Startup vs korporace vs PrevioPéhápkaři
 
RabbitMQ a ElasticSearch v Previu
RabbitMQ a ElasticSearch v PreviuRabbitMQ a ElasticSearch v Previu
RabbitMQ a ElasticSearch v PreviuPéhápkaři
 
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...Péhápkaři
 
Čtvrtkon #53 - Štěpán Zikmund
Čtvrtkon #53 - Štěpán ZikmundČtvrtkon #53 - Štěpán Zikmund
Čtvrtkon #53 - Štěpán ZikmundPéhápkaři
 
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...Péhápkaři
 
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)Péhápkaři
 
PHP Evening #1 - Automatizace [Jan Klat]
PHP Evening #1 - Automatizace [Jan Klat]PHP Evening #1 - Automatizace [Jan Klat]
PHP Evening #1 - Automatizace [Jan Klat]Péhápkaři
 
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...Péhápkaři
 
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...Péhápkaři
 
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...Péhápkaři
 
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy  (11. sraz přátel ...Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy  (11. sraz přátel ...
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...Péhápkaři
 
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...Péhápkaři
 
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...Péhápkaři
 
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)Péhápkaři
 
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)Péhápkaři
 
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Péhápkaři
 
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)Péhápkaři
 
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)Péhápkaři
 
Karel Škopek - WordPress + Laravel = &lt;3 (4. sraz přátel Symfony v Praze)
Karel Škopek - WordPress + Laravel = &lt;3 (4. sraz přátel Symfony v Praze)Karel Škopek - WordPress + Laravel = &lt;3 (4. sraz přátel Symfony v Praze)
Karel Škopek - WordPress + Laravel = &lt;3 (4. sraz přátel Symfony v Praze)Péhápkaři
 
Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)
Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)
Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)Péhápkaři
 

More from Péhápkaři (20)

Startup vs korporace vs Previo
Startup vs korporace vs PrevioStartup vs korporace vs Previo
Startup vs korporace vs Previo
 
RabbitMQ a ElasticSearch v Previu
RabbitMQ a ElasticSearch v PreviuRabbitMQ a ElasticSearch v Previu
RabbitMQ a ElasticSearch v Previu
 
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
 
Čtvrtkon #53 - Štěpán Zikmund
Čtvrtkon #53 - Štěpán ZikmundČtvrtkon #53 - Štěpán Zikmund
Čtvrtkon #53 - Štěpán Zikmund
 
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
 
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
 
PHP Evening #1 - Automatizace [Jan Klat]
PHP Evening #1 - Automatizace [Jan Klat]PHP Evening #1 - Automatizace [Jan Klat]
PHP Evening #1 - Automatizace [Jan Klat]
 
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
 
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
 
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
 
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy  (11. sraz přátel ...Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy  (11. sraz přátel ...
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...
 
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
 
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
 
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
 
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
 
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
 
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
 
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
 
Karel Škopek - WordPress + Laravel = &lt;3 (4. sraz přátel Symfony v Praze)
Karel Škopek - WordPress + Laravel = &lt;3 (4. sraz přátel Symfony v Praze)Karel Škopek - WordPress + Laravel = &lt;3 (4. sraz přátel Symfony v Praze)
Karel Škopek - WordPress + Laravel = &lt;3 (4. sraz přátel Symfony v Praze)
 
Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)
Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)
Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)
 

PHP Evening #1 - Propel ORM [Martin Sojka]

  • 1. PHP Evening #1 Propel ORM Martin Sojka @sojki
  • 2. Edgedesign, Net Magnet České Budějovice, Český Krumlov Backend developer
  • 3. 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.
  • 4.
  • 5. Co to je? https://goo.gl/3IeuCd | http://martinfowler.com/bliki/OrmHate.html
  • 6. 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
  • 7. Co má Propel stejné jako Doctrine ◉ Výborná dokumentace ◉ Symfony bridge Co jde lépe ◉ IDE friendly ◉ Učící křivka
  • 8. Hlavní rozdíl * 1 2 3 4 1 2 3 4 time * Propel v týdnech, Doctrine v měsících
  • 9. Propel je dvakrát menší, ale v základu již obsahuje vše potřebné, např. migrace, behaviors...
  • 10. A co na to Propel sám? http://sandbox.propelorm.org/example/i18n - Vyzkoušejte Propel v sandboxu, bez nutnosti cokoli instalovat
  • 11. 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 PropelBundlePropelBundlePropelBundle(), - 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
  • 12. Basic usage - Dokumentace - Propel ORM sandbox - CRUD http://propelorm.org/documentation/03-basic-crud.html
  • 13. 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
  • 14.
  • 15. 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.
  • 16. Batteries included - Migrations - Behaviors - Hydrators - Exporters - Form generator (v Bundle) - ...
  • 17. 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
  • 18. Je libo JSON? $json = <<<JSON { "foo" : "bar", "bar" : { "subkey" : "value" } } JSON; $query->where('content->"$.bar.subkey" = "value"'); <column name="content" type="varchar" sqlType="json" />
  • 19. 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
  • 20. “ “Díky, že jste to vydrželi” Martin Sojka @sojki