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
100
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.5k
Content editing in Symfony
tgalopin
3
950
Symfony UX: a new JavaScript ecosystem for Symfony
tgalopin
4
4k
[SymfonyLive Paris 2020] Pragmatic frontend for Symfony developers
tgalopin
2
1.1k
SymfonyInsight: How to setup quality processes in Symfony apps
tgalopin
2
370
Symfony 5 - AFUP Day Lille 2020
tgalopin
1
860
Pragmatic frontend for Symfony developers
tgalopin
2
1.1k
Demystifying React for Symfony developers
tgalopin
3
750
Symfony 5
tgalopin
1
680
Other Decks in Programming
See All in Programming
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
130
subpath importsで始めるモック生活
10tera
0
300
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
Less waste, more joy, and a lot more green: How Quarkus makes Java better
hollycummins
0
100
watsonx.ai Dojo #4 生成AIを使ったアプリ開発、応用編
oniak3ibm
PRO
1
100
受け取る人から提供する人になるということ
little_rubyist
0
230
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
2
250
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
540
LLM生成文章の精度評価自動化とプロンプトチューニングの効率化について
layerx
PRO
2
190
Realtime API 入門
riofujimon
0
150
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
A designer walks into a library…
pauljervisheath
203
24k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Optimizing for Happiness
mojombo
376
70k
How to Ace a Technical Interview
jacobian
276
23k
Documentation Writing (for coders)
carmenintech
65
4.4k
Typedesign – Prime Four
hannesfritz
40
2.4k
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