![Page 1: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/1.jpg)
Große Systeme, loose Kopplung...
Stephan Hochdörfer, bitExpert AG
![Page 2: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/2.jpg)
Große Systeme, loose Kopplung...
Über mich
Stephan Hochdörfer, bitExpert AG
Department Manager Research Labs
PHP Entwickler seit 1999
@shochdoerfer
![Page 3: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/3.jpg)
![Page 4: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/4.jpg)
![Page 5: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/5.jpg)
![Page 6: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/6.jpg)
![Page 7: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/7.jpg)
![Page 8: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/8.jpg)
![Page 9: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/9.jpg)
![Page 10: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/10.jpg)
![Page 11: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/11.jpg)
![Page 12: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/12.jpg)
![Page 13: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/13.jpg)
![Page 14: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/14.jpg)
![Page 15: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/15.jpg)
![Page 16: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/16.jpg)
"High-level modules should not depend on low-level modules.
Both should depend on abstractions."Robert C. Martin
Große Systeme, loose Kopplung...
![Page 17: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/17.jpg)
Große Systeme, loose Kopplung...
High Level, Low Level...
User Controller
Datenbankverbindung (User DB)
![Page 18: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/18.jpg)
Große Systeme, loose Kopplung...
High Level, Low Level...
User Controller
User Service
User Repository
![Page 19: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/19.jpg)
![Page 20: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/20.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Horizontales Zerschneiden
![Page 21: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/21.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Horizontales Zerschneiden
Presentation Layer
Business Layer
Resource Access Layer
![Page 22: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/22.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Zerschneiden nach Services
Service Interface Layer
Business Layer
Resource Access Layer
![Page 23: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/23.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Zerschneiden in Services
Frontend
REST API
Datastore
Solr Search Service
![Page 24: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/24.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Vertikales Zerschneiden
![Page 25: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/25.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Vertikales Zerschneiden
ModulA ModulB ModulC
![Page 26: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/26.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Vertikal + Horizontal
PresentationLayer
BusinessLayer
ResourceAccess Layer
PresentationLayer
BusinessLayer
ResourceAccess Layer
PresentationLayer
BusinessLayer
ResourceAccess Layer
![Page 27: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/27.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Auf Aspekte achten
![Page 28: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/28.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Auf Aspekte achten
Presentation Layer
Business Layer
Resource Access Layer
Aspekte
![Page 29: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/29.jpg)
Große Systeme, loose Kopplung...
Wie separieren? Auf Aspekte achten<?phpnamespace Acme\Products\Aspects;
/** * @FLOW3\Aspect */class LoggingAspect { /** * @FLOW3\Inject * @var \Acme\Logger\LoggerInterface */ protected $logger;
/** * @param \TYPO3\FLOW3\AOP\JoinPointInterface $joinPoint * @FLOW3\Before("method(Acme\Products\Model\Product->delete())") */ public function log(\TYPO3\FLOW3\AOP\JoinPointInterface $jp) { $product = $jp->getMethodArgument('product'); $this->logger->info('Removing ' . $product->getName()); }}
![Page 30: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/30.jpg)
Große Systeme, loose Kopplung...
Wie erreicht man eine loose Kopplung?
![Page 31: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/31.jpg)
![Page 32: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/32.jpg)
Große Systeme, loose Kopplung...
Registry Pattern<?php
Registry::set('platzhalter', 'Lorem ipsum...');
echo Registry::get('platzhalter');
![Page 33: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/33.jpg)
Große Systeme, loose Kopplung...
<?php
Registry::set('platzhalter', 'Lorem ipsum...');
Registry::set('platzhalter', new RandomObject());
Registry::set('platzhalter', array());
echo Registry::get('platzhalter');
Registry Pattern – nicht typsicher!
![Page 34: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/34.jpg)
Große Systeme, loose Kopplung...
Registry Pattern<?php
class MyController { protected $myService; public function __construct() { $this>myService = Registry::get('MyService'); }
public function execute() { $this>myService>doStuff();
}}
![Page 35: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/35.jpg)
Große Systeme, loose Kopplung...
Wie erreicht man eine loose Kopplung?
„When you put a class name in a string you ain't decoupling anything. You're
just hiding dependencies“@jensschauder
![Page 36: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/36.jpg)
![Page 37: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/37.jpg)
Große Systeme, loose Kopplung...
Service Locator<?php
class MyController { protected $myService; public function __construct() { $this>myService = ServiceLocator::getMyService(); }
public function execute() { $this>myService>doStuff();
}}
![Page 38: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/38.jpg)
Große Systeme, loose Kopplung...
Wie richtig entkoppeln?
![Page 39: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/39.jpg)
Dependencies explizit machen!
Große Systeme, loose Kopplung...
Wie richtig entkoppeln?
![Page 40: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/40.jpg)
![Page 41: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/41.jpg)
Große Systeme, loose Kopplung...
„Dependency Injection is akey element of agile architecture“
Ward Cunningham
![Page 42: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/42.jpg)
Dependency Injection in 5 Slides
Große Systeme, loose Kopplung...
![Page 43: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/43.jpg)
Dependency Injection in 5 Slides
Große Systeme, loose Kopplung...
new MyController(new MyService());
![Page 44: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/44.jpg)
Dependency Injection in 5 Slides
Consumer
Große Systeme, loose Kopplung...
![Page 45: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/45.jpg)
Dependency Injection in 5 Slides
Consumer Dependencies
Große Systeme, loose Kopplung...
![Page 46: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/46.jpg)
Dependency Injection in 5 Slides
Consumer Dependencies Container
Große Systeme, loose Kopplung...
![Page 47: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/47.jpg)
Dependency Injection in 5 Slides
Consumer Dependencies Container
Große Systeme, loose Kopplung...
![Page 48: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/48.jpg)
![Page 49: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/49.jpg)
Dependency Injection – Konfiguration (ein Weg)
Große Systeme, loose Kopplung...
<?xml version="1.0" ?><container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd">
<services><service id="acme.talk.repo"
class="Acme\TalkBundle\Service\TalkRepository" />
<service id="acme.talk.service" class="Acme\TalkBundle\Service\TalkService">
<argument type="service" id="acme.talk.repo" /></service>
</services></container>
![Page 50: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/50.jpg)
Große Systeme, loose Kopplung...
Dependency Injection
„Dependency Injection“ basiert auf „Separation of concerns“.
![Page 51: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/51.jpg)
Große Systeme, loose Kopplung...
Dependency Injection
Und wie hilft mir das nun beim Skalieren?
![Page 52: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/52.jpg)
Große Systeme, loose Kopplung...
Dependency Injection
Loose Kopplung für loose Services
![Page 53: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/53.jpg)
Große Systeme, loose Kopplung...
Dependency Injection – Loose Kooplung<?php
class MyUserService { /** * @var IMyUserRepo */ protected $myUserRepo; public function __construct(
IMyUserRepo $myUserRepo) { $this>myUserRepo = $myUserRepo; } public function readUsers(Filter $filter) {
return $this>myUserRepo>read($filter); }}
![Page 54: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/54.jpg)
![Page 55: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/55.jpg)
Große Systeme, loose Kopplung...
Dependency Injection – Loose Kooplung<?php
interface IMyUserRepo {/** * Liest User aus dem Repository und gibt * diese zurück. * @param Filter $filter * @return array */public function read(Filter $filter);
}
![Page 56: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/56.jpg)
Große Systeme, loose Kopplung...
Dependency Injection – Loose Kooplung<?php
class DBRepo implements IMyUserRepo {/** * @see IMyUserRepo.read() */public function read(Filter $filter);
}
class WebserviceRepo implements IMyUserRepo {/** * @see IMyUserRepo.read() */public function read(Filter $filter);
}
![Page 57: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/57.jpg)
![Page 58: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/58.jpg)
![Page 59: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/59.jpg)
![Page 60: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/60.jpg)
Große Systeme, loose Kopplung...
Merke
Je verteilter, desto skalierbarer!
![Page 61: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/61.jpg)
Große Systeme, loose Kopplung...
Merke
Je verteilter, desto schwerer zu debuggen!
![Page 62: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/62.jpg)
Große Systeme, loose Kopplung...
Merke
Daraus folgt:Je verteilter, desto mehr Log!
![Page 63: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/63.jpg)
Große Systeme, loose Kopplung...
Merke
Performance im Auge behalten!
![Page 64: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/64.jpg)
Große Systeme, loose Kopplung...
Hilfe meine Applikation ist zu groß
![Page 65: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/65.jpg)
Große Systeme, loose Kopplung...
Hilfe meine Applikation ist zu groß
Aufteilung in Module oder (Hilfs-)Bibliotheken
![Page 66: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/66.jpg)
Große Systeme, loose Kopplung...
Hilfe meine Applikation ist zu groß
Bibliothek als Blackbox: Nur Verwenden, Implementierung egal
![Page 67: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/67.jpg)
Dependency Management
Große Systeme, loose Kopplung...
![Page 68: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/68.jpg)
![Page 69: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/69.jpg)
Composer in drei Schritten: 1. Einbinden
Große Systeme, loose Kopplung...
curl -s https://getcomposer.org/installer | php
![Page 70: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/70.jpg)
Composer in drei Schritten: 2. Konfigurieren
Große Systeme, loose Kopplung...
{"require": {
"symfony/translation": "2.1.*","symfony/config": "2.1.*","symfony/yaml": "2.1.*","twig/twig": "1.6.0"
}}
![Page 71: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/71.jpg)
Composer in drei Schritten: 3. Installieren
Große Systeme, loose Kopplung...
php composer.phar install
![Page 72: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/72.jpg)
Composer – Dependencies aktualisieren
Große Systeme, loose Kopplung...
php composer.phar update
![Page 73: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/73.jpg)
![Page 74: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/74.jpg)
Dependency Management
Große Systeme, loose Kopplung...
![Page 75: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/75.jpg)
Große Systeme, loose Kopplung...
Maven - Project Object Model
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">
<groupId>com.acme</groupId><artifactId>myproject</artifactId><packaging>jar</packaging><version>0.0.1-SNAPSHOT</version><name>My project</name>
</project>
![Page 76: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/76.jpg)
Große Systeme, loose Kopplung...
Maven - Dependencies
<dependencies><dependency>
<groupId>com.zend</groupId><artifactId>framework</artifactId><version>1.11.6-SNAPSHOT</version><type>jar</type><scope>compile</scope>
</dependency></dependencies>
![Page 77: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/77.jpg)
Große Systeme, loose Kopplung...
Maven für PHP?
<pluginRepository><id>release-repo1.php-maven.org</id><name>PHP-Maven 2 Release Repository</name><url>http://repo1.php-maven.org/release</url><releases>
<enabled>true</enabled></releases>
</pluginRepository>
![Page 78: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/78.jpg)
Große Systeme, loose Kopplung...
Maven(3) für PHP?
https://github.com/php-maven
![Page 79: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/79.jpg)
![Page 80: Große Systeme, lose Kopplung, Spaß bei der Arbeit! - WDC12](https://reader034.vdocuments.mx/reader034/viewer/2022051514/54b4fd4e4a795945748b469f/html5/thumbnails/80.jpg)
Vielen Dank!