13
Magento 2 & Composer

Manuele Menozzi - Gestione delle dipendenze con Composer in Magento 2

Embed Size (px)

Citation preview

Magento 2 &

Composer

About Me

Manuele MenozziCTO @ Webgriffe

Magento Certified Developer

Zend Certified PHP Engineer

Over 6 years of real-life experience with Magento

A Dependency Manager for PHP

The

./composer.json

How it Works { “require”: { “acme/lib-a”: “1.1.2”, “acme/lib-b”: “2.*” }}

https://packagist.org/

$ composer install

./vendor/acme/lib-a

./vendor/acme/lib-b

./vendor/other/lib-a-dependency

./composer.lock

./vendor/autoload.php

Versioning, Deployment & Composer

� Put under version control composer.json and composer.lock files

� Ignore from version control the vendor directory

� Combine your VCS system with Composer in your deployment process

Composer & Magento 1.x

./composer.json

./composer.lock

./vendor/├── autoload.php├── acme/│ ├── lib-a/│ └── lib-b/└── other/ └── lib-a-dependency/

./app/├── code/│ ├── community/│ ├── core/│ └── local/├── design/├── etc/│ └── modules/./skin/

Magento 1.x Solution

Magento Composer Installer

Works but…

� VCS ignore repetitive work� Same class defined in two files issues� Hard to maintain related upstream

./index.php./app/bootstrap.php./app/autoload.php

./vendor/autoload.php

Magento 2

Universal Autoloading

Magento 2

Self-Contained Packages

Module -> app/code/Vendor/Module

Theme -> app/design/Vendor/theme

Locale -> app/i18n/vendor/package_name

Magento 2

Component Registrar

any/path/of/your/choice/registration.php

use \Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(

ComponentRegistrar::MODULE,

'VendorName_ModuleName',

__DIR__

);

or ::THEMEor ::LANGUAGE

or ‘frontend/Vendor/theme’or ‘vendor_it_it’

Magento 2

Component Registrar Loading

vendor/magento/braintree/composer.json

...

“autoload”: {

“files”: [“registration.php”],

“psr-4”: {“Magento\\Braintree”: “”}

}

...

Code Reuse

Better Code

thanks!

Any questions?

You can find me at

@mmenozzihttp://mmenozzi.github.io/