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
Managing your project PHP dependencies
Search
Théo FIDRY
October 20, 2016
Research
720
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Managing your project PHP dependencies
Théo FIDRY
October 20, 2016
More Decks by Théo FIDRY
See All by Théo FIDRY
Mutation Testing PHPDeveloperDay
theofidry
1
700
Mutation Testing - Better code by making bugs
theofidry
3
1.4k
Mutation Testing - Better code by making bugs
theofidry
0
150
Other Decks in Research
See All in Research
SoftMatcha 2: 1兆語規模コーパスの超高速かつ柔らかい検索
e869120_sub
7
3.5k
2026年度 生成AI を活用した論文執筆ガイド/ワークショップ / 2026 Academic Year Guide to Writing Papers Using Generative AI - Workshop
ks91
PRO
0
180
「車1割削減、渋滞半減、公共交通2倍」を 熊本から岡山へ@RACDA設立30周年記念都市交通フォーラム2026
trafficbrain
1
1.2k
(SIGQS17) Frasco-VS:フラグメントに基づく薬剤候補化合物選抜の量子アニーリングによる実現
keisukeyanagisawa
PRO
0
130
適応的スパムフィルタのための軽量な類似メッセージカウンタ / jsai2026-adaptive-spam-filter
monochromegane
0
4k
Sequences of Logits Reveal the Low Rank Structure of Language Models
sansantech
PRO
1
270
データセンター事業者を取り巻く近年の状況とその中での研究開発動向、テストベッドへの貢献の可能性
kikuzo
1
230
CyberAgent AI Lab研修 / Social Implementation Anti-Patterns in AI Lab
chck
7
4.7k
英語教育 “研究” のあり方:学術知とアウトリーチの緊張関係
terasawat
1
1k
「なんとなく」の顧客理解から脱却する ──顧客の解像度を武器にするインサイトマネジメント
tajima_kaho
10
7.7k
計算情報学研究室(数理情報学第7研究室)2026
tomohirokoana
0
600
さくらインターネット研究所テックトーク2026春、研究開発Gr.25年度成果26年度方針
kikuzo
0
150
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
480
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
Scaling GitHub
holman
464
140k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
420
Between Models and Reality
mayunak
4
360
We Have a Design System, Now What?
morganepeng
55
8.2k
30 Presentation Tips
portentint
PRO
1
330
Building the Perfect Custom Keyboard
takai
2
800
Agile that works and the tools we love
rasmusluckow
331
22k
Transcript
MANAGING YOUR PROJECT DEPENDENCIES GitHub: @theofidry Twitter: @tfidry 1
“There is no solution, only tradeoffs” Managing your project dependencies
- Paul M. Jones 2
Scope Managing your project dependencies • Case of study: PHP
framework agnostic library • POV: maintainer of the library • Modern PHP version (Composer) 3
What are your project dependencies? Managing your project dependencies 4
Types of dependencies Managing your project dependencies • Hard dependencies
• Optional dependencies • Dev dependencies 5
How to manage those dependencies? Managing your project dependencies 6
Managing your project dependencies Image source: https://getcomposer.org/img/logo-composer-transparent5.png
Hard dependencies Managing your project dependencies 8
Optional dependencies Managing your project dependencies 9
Optional & Dev dependencies Managing your project dependencies 10
Cool? Managing your project dependencies 11
Managing your project dependencies Image source: https://www.allmystery.de/i/tcce1a2_35567217.jpg
require-dev limitations Managing your project dependencies 13
You are changing your dependencies Managing your project dependencies 14
Managing your project dependencies symfony/yaml <3.0 15
Harder to detect issues or incompatibilities Managing your project dependencies
16
“Stupid” conflicts Managing your project dependencies static analysis tool 17
Annoying conflicts Managing your project dependencies never used together 18
Solutions? Managing your project dependencies 19
Managing your project dependencies Example #1 20
KISS: don’t use those dependencies Managing your project dependencies 21
Recap: Managing your project dependencies • pros: dead simple •
cons: you can’t use this dependency 22
Image source: http://i2.mirror.co.uk/incoming/article5940823.ece/ALTERNATES/s1227b/Luhu-the-saddest-tabby-cat.jpg
PHARs Managing your project dependencies 24
Managing your project dependencies What is a PHAR? “The phar
extension provides a way to put entire PHP applications into a single file called a "phar" (PHP Archive) “ Quote source: http://php.net/manual/en/intro.phar.php 25
26
Managing your project dependencies Image source: http://fatcdn.hipobw1hofq5ehpwigfo4.netdna-cdn.com/wp-content/uploads/2015/07/dangercat5-768x1024.jpg WARNING
The code of a PHAR is not isolated Managing your
project dependencies 28
Managing your project dependencies symfony/yaml 2.7.0 symfony/yaml 3.1.0 29
[1]: https://pixabay.com/en/atomic-bomb-mushroom-cloud-explosion-1011738/
Possible outcomes Managing your project dependencies • Everything runs fine
(lucky) • Big fat error (a bit less luck) • Very subtle nasty bug you’ll have hard time to solve (wish you luck man) 31
When can you use a PHAR? Managing your project dependencies
32
When it doesn’t execute your code Managing your project dependencies
33
Recap: Managing your project dependencies • pros: solve the conflict
problem • cons: • Inappropriate when PHARs must execute code • PHARs are not trackable 34
Managing your project dependencies Track your PHARs with tommy-muehle/tooly-composer-script 35
Managing your project dependencies 36
Managing your project dependencies Example #2 37
Use multiple repositories Managing your project dependencies 38
Managing your project dependencies • Core library : acme/lib •
Symfony bridge : acme/lib-bundle • Laravel bridge: acme/lib-laravel-provider 39
Recap: Managing your project dependencies • pros: simple • cons:
you have to manage and synchronize multiple repositories 40
Tweak testing configuration Managing your project dependencies 41
Symfony bridge tests Laravel bridge tests Core library tests 42
Recap: Managing your project dependencies • pros: it works •
cons: • can be very tricky • slow 43
Another solution? Managing your project dependencies 44
Multiple composer.json files Managing your project dependencies 45
Managing your project dependencies Example #2 46
Core library Symfony bridge Laravel bridge 47
How to easily manage them? Managing your project dependencies 48
Managing your project dependencies • bamarni/composer-bin-plugin • theofidry/composer-inheritance-plugin • wikimedia/composer-merge-plugin
49
Managing your project dependencies 50
Managing your project dependencies 51
bamarni symfony/yaml 52
Managing your project dependencies Example #2 53
Core library Laravel bridge Symfony bridge 54
55
Demo https://github.com/theofidry/sfpot-lille-managing-your-dependencies-demo Managing your project dependencies
My takeaway Managing your project dependencies
Questions? Managing your project dependencies
Thanks! Managing your project dependencies GitHub: @theofidry Twitter: @tfidry