Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Why Puli?
Search
Titouan Galopin
January 27, 2016
Programming
0
110
Why Puli?
What is Puli? How can I use it in my application? Why is it the "next package revolution of PHP"?
Titouan Galopin
January 27, 2016
Tweet
Share
More Decks by Titouan Galopin
See All by Titouan Galopin
Concevoir son API pour le futur
tgalopin
2
1.7k
Content editing in Symfony
tgalopin
3
1.1k
Symfony UX: a new JavaScript ecosystem for Symfony
tgalopin
4
4.1k
[SymfonyLive Paris 2020] Pragmatic frontend for Symfony developers
tgalopin
2
1.2k
SymfonyInsight: How to setup quality processes in Symfony apps
tgalopin
2
390
Symfony 5 - AFUP Day Lille 2020
tgalopin
1
960
Pragmatic frontend for Symfony developers
tgalopin
2
1.2k
Demystifying React for Symfony developers
tgalopin
3
800
Symfony 5
tgalopin
1
710
Other Decks in Programming
See All in Programming
Claude Codeで挑むOSSコントリビュート
eycjur
0
190
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
290
SOCI Index Manifest v2が出たので調べてみた / Introduction to SOCI Index Manifest v2
tkikuc
1
110
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
オープンセミナー2025@広島「君はどこで動かすか?」アンケート結果
satoshi256kbyte
0
220
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
990
令和最新版手のひらコンピュータ
koba789
14
8.2k
Kiroで始めるAI-DLC
kaonash
2
420
AIでLINEスタンプを作ってみた
eycjur
1
220
TanStack DB ~状態管理の新しい考え方~
bmthd
2
370
Understanding Ruby Grammar Through Conflicts
yui_knk
1
190
DockerからECSへ 〜 AWSの海に出る前に知っておきたいこと 〜
ota1022
5
1.9k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Documentation Writing (for coders)
carmenintech
73
5k
GitHub's CSS Performance
jonrohan
1032
460k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Rails Girls Zürich Keynote
gr2m
95
14k
Done Done
chrislema
185
16k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Writing Fast Ruby
sferik
628
62k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Transcript
Why Puli? Titouan Galopin SensioLabs University 1
About Titouan Galopin Puli core contributor puli.js lead developer @tgalopin
// titouangalopin.com 2
Why this talk? 3
Agenda I. What’s Puli? II. How to use Puli in
your application? III. Status of Puli and what’s coming in 2016 4
I. What’s Puli? 5
Currently in Packagist Libraries Symfony bundles Drupal modules Zend Framework
modules Laravel packages What’s Puli? 6
All framework extensions do the same things What’s Puli? 7
Ideal world Libraries ✓ Symfony bundles Drupal modules Zend Framework
modules Laravel packages What’s Puli? 8
Why do we need framework extensions? What’s Puli? 9
What’s Puli? Application FOSUserBundle login.html.twig To simplify access to resources
Before: return $this->render( __DIR__ . ‘/../../vendor/ friendsofsymfony/user- bundle/Resources/views/Security/index.html. twig’ ); After: return $this->render( ‘FOSUserBundle:Security:login.html.twig’ ); 10
What’s Puli? Application translator FOSUserBundle messages.fr.xlst To autoload specialized files
/FOS /UserBundle /Command /ActivateUserCommand.php <= /Controller /DependencyInjection /FOSUserBundleExtension.php <= /Resources /translations /messages.en.xlst <= /messages.fr.xlst <= /... 11
What’s Puli? To publish assets /web/bundles/fos-user-bundle /css /style.css /images /image.png
/vendor/.../FOS/UserBundle /Resources /public /css /style.css /images /image.png 12
Puli replaces framework extensions by solving these 3 problems What’s
Puli? 13
Three targets : Libraries developers Frameworks developers Applications developers What’s
Puli? 14
Library developers A single config file and your library is
available for everyone What’s Puli? 15
Frameworks developers Stop wasting efforts by reinventing the wheel What’s
Puli? 16
Application developers Puli is usable in your application! What’s Puli?
17
II. How to use Puli in your application? 18
How to use Puli in your application? 19 Puli CLI
vs puli.json
How to use Puli in your application? 20 puli.json /app
/src /vendor /web /composer.json /puli.json
How to use Puli in your application? 21 Simplify access
to resources
How to use Puli in your application? 22 // puli.json
{ "resources": { "/app": "app/Resources", "/custom-library": "vendor/..." } } Simplify access to resources
How to use Puli in your application? 23 require ‘vendor/autoload.php’;
$puliClass = PULI_FACTORY_CLASS; $puli = new $puliClass(); $repo = $puli->createRepository(); Simplify access to resources
How to use Puli in your application? 24 echo $repo->get('/app/views/index.html.twig')
->getBody(); echo $repo->get('/app/views/index.html.twig') ->getFilesystemPath(); echo $repo->get('/custom-library'. .'/views/index.html.twig') ->getFilesystemPath(); Simplify access to resources
meh. How to use Puli in your application? 25
puli/composer-plugin How to use Puli in your application? 26
Let library developers create their puli.json How to use Puli
in your application? 27
How to use Puli in your application? 28 // /vendor/acme/custom-library/puli.json
{ "resources": { "/views": "views", ... } } Simplify access to resources
How to use Puli in your application? 29 $ composer
require acme/custom-library Updating dependencies (including require-dev) - Installing acme/custom-library (1.0.0) Downloading: 100% Synchronizing Puli with Composer Installing acme/custom-library Deleting the ".puli" directory Running "puli build" Simplify access to resources
How to use Puli in your application? 30 echo $repo->get('/acme/custom-library'.
.'/views/index.html.twig') ->getFilesystemPath(); Simplify access to resources
How to use Puli in your application? 31 Autoload specialized
files
How to use Puli in your application? 32 // your
app puli.json { "resources": { "/app": "app", "/res": "app/Resources" }, "provide": { "/app/config/services.yml": "symfony/services", "/res/translations/*.yml": "symfony/translations" } } Autoload specialized files Defined by Symfony to load your files using Puli $discovery->findBindings('...')
How to use Puli in your application? 33 // /vendor/acme/custom-library/puli.json
{ "resources": { "/config": "res/config", "/translations": "res/translations" }, "provide": { "/config/symfony-services.yml": "symfony/services", "/config/pimple-services.yml": "pimple/services", "/config/php-di-services.yml": "php-di/services", "/translations/*.xlst": "php-fig/xlst-translations" } } Autoload specialized files Usable by libraries! Binding are not necessarily used by the “consumer”
How to use Puli in your application? 34 $ composer
require acme/custom-library => Services available in your container => Translations available in your translator => Doctrine entities, Twig extensions, ... Autoload specialized files Plug’n’Play (even more than bundles!)
How to use Puli in your application? 35 Publish assets
How to use Puli in your application? 36 Coming in
2016: puli.js JS library to resolve Puli path in filesystem paths Publish assets
How to use Puli in your application? 37 // gulpfile.babel.js
gulp.task('babel', () => gulp.src(puli.paths('/app/**/*.jsx') .pipe(babel()) .pipe(ulgify()) .pipe(header('(c) SensioLabs')) .pipe(gulp.dest('web/built/min.js')) ); Publish assets
Let’s resume Why Puli is the future of PHP packages
38
Puli is for libraries developers 39 Let’s resume
40 Less community fragmentation Let’s resume
One library to rule them all Develop for every framework
at the same time: single codebase 41 Let’s resume
Puli is for framework developers 42 Let’s resume
Don’t reinvent the wheel, use Puli puli/repository puli/manager puli/discovery 43
Let’s resume
Puli is for applications developers 44 Let’s resume
Remove framework extensions complexity Install Twig Bundle/Extension/Module Install Twig 45
Let’s resume
Plug’n’Play packages composer require => ready to use 46 Let’s
resume
Less Magic Everything is configured 47 Let’s resume
Easy to extend Add your own bindings, your own resources,
... 48 Let’s resume
Powerful features Overriding, Versioning, Symbolic links, ... 49 Let’s resume
Integrate in your development process Composer, puli.js 50 Let’s resume
III. Status of Puli and what’s coming in 2016 51
1.0.0-beta10 52 Status of Puli and what’s coming in 2016
Already used in production 53 Status of Puli and what’s
coming in 2016
Documentation on docs.puli.io 54 Status of Puli and what’s coming
in 2016
Working Symfony bundle puli/symfony-bundle 55 Status of Puli and what’s
coming in 2016
Projects working on a Puli integration out of the box
56 Status of Puli and what’s coming in 2016
Get involved! github.com/puli/issues 57 Status of Puli and what’s coming
in 2016
Questions? 58 Titouan Galopin SensioLabs University