Magento 2.x. Samo życie.

15
Magento 2.x Samo życie Kamil Balwierz

Transcript of Magento 2.x. Samo życie.

Page 1: Magento 2.x. Samo życie.

Magento 2.xSamo życieKamil Balwierz

Page 2: Magento 2.x. Samo życie.
Page 3: Magento 2.x. Samo życie.

● 17 listopad 2015

● 228 000 pobrań

● 800 sklepów online

Page 4: Magento 2.x. Samo życie.

Frontend

● minifikacja HTML

● jQuery

● RequireJS

● Knockout

● LESS

Page 5: Magento 2.x. Samo życie.

Bez Varnish

Varnish + ESI

Varnish + Knockout

HTML 500ms

HTML 350msHTML 50ms +

HTML 50ms

JSON 350ms(pobierz tylko raz)

Page 6: Magento 2.x. Samo życie.

Frontend

● minifikacja HTML

● jQuery

● RequireJS

● Knockout

● LESS

Page 7: Magento 2.x. Samo życie.

SnowdogApps/magento2-frontools

Page 8: Magento 2.x. Samo życie.

SnowdogApps/magento2-theme-blank-sass

Page 9: Magento 2.x. Samo życie.

Backend Magento 2 ● composer

● Magento Marketplace

● Zend Framework

● Zend Framework 2

● Symfony

● magento/framework

Page 10: Magento 2.x. Samo życie.

Service Contracts ● interface PHP

● @api

<?phpnamespace Magento\Catalog\Api;/** * @api */ interface ProductRepositoryInterface{ /** * Create product * * @param \Magento\Catalog\Api\Data\ProductInterface $product * @param bool $saveOptions * @return \Magento\Catalog\Api\Data\ProductInterface * @throws \Magento\Framework\Exception\InputException * @throws \Magento\Framework\Exception\StateException * @throws \Magento\Framework\Exception\CouldNotSaveException */ public function save(\Magento\Catalog\Api\Data\ProductInterface $product, $saveOptions = false); /** * Get info about product by product SKU * * @param string $sku * @param bool $editMode * @param int|null $storeId * @param bool $forceReload * @return \Magento\Catalog\Api\Data\ProductInterface * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function get($sku, $editMode = false, $storeId = null, $forceReload = false); /** * Get info about product by product id * * @param int $productId * @param bool $editMode * @param null|int $storeId * @param bool $forceReload * @return \Magento\Catalog\Api\Data\ProductInterface * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function getById($productId, $editMode = false, $storeId = null, $forceReload = false); /** * Delete product * * @param \Magento\Catalog\Api\Data\ProductInterface $product * @return bool Will returned True if deleted * @throws \Magento\Framework\Exception\StateException */ public function delete(\Magento\Catalog\Api\Data\ProductInterface $product);

<?phpnamespace Magento\Catalog\Api\Data;/** * @api */interface ProductInterface extends \Magento\Framework\Api\CustomAttributesDataInterface{ /** * Product id * * @return int|null */ public function getId(); /** * Product sku * * @return string */ public function getSku(); /** * Product name * * @return string|null */ public function getName(); /**

Page 11: Magento 2.x. Samo życie.

Dependency Injection ● wstrzyknięcie konstruktorem

● minimalna konfiguracja

<?phpnamespace Training\FlatIndexer\Model\ResourceModel\Flat;use Training\FlatIndexer\Model\ResourceModel\Context;use Training\FlatIndexer\Model\ResourceModel\Metadata;class TableBuilder{ /** * @var Metadata */ private $metadata; /** * @var Context */ private $context; /** * TableBuilder constructor. * @param Metadata $metadata * @param Context $context */ public function __construct(Metadata $metadata, Context $context) { $this->metadata = $metadata; $this->context = $context; } public function validateTable() { $this->validateTableByName($this->context->getIndexTable()); return $this; } public function switchTable() { $this->context->toggleTable(); return $this; }

Page 12: Magento 2.x. Samo życie.

Object Manager ● Interceptory

● klasy Proxy

● typy wirtualne

<?xml version="1.0"?><config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <virtualType name="contextCategory" type="Training\FlatIndexer\Model\ResourceModel\Context"> <arguments> <argument name="indexerCode" xsi:type="string">training_flat_index_category</argument> <argument name="entity" xsi:type="string">catalog_category</argument> </arguments> </virtualType> <virtualType name="metadataCategory" type="Training\FlatIndexer\Model\ResourceModel\Metadata"> <arguments> <argument name="context" xsi:type="object">contextCategory</argument> <argument name="systemAttributeCodes" xsi:type="array"> <item name="path" xsi:type="string">path</item> <item name="parent_id" xsi:type="string">parent_id</item> </argument> </arguments> </virtualType> <virtualType name="tableBuilderCategory" type="Training\FlatIndexer\Model\ResourceModel\Flat\TableBuilder"> <arguments> <argument name="context" xsi:type="object">contextCategory</argument> <argument name="metadata" xsi:type="object">metadataCategory</argument> </arguments> </virtualType> <virtualType name="tablePopulatorCategory" type="Training\FlatIndexer\Model\ResourceModel\Flat\TablePopulator"> <arguments> <argument name="context" xsi:type="object">contextCategory</argument> <argument name="metadata" xsi:type="object">metadataCategory</argument> </arguments> </virtualType> <virtualType name="trainingFlatIndexerCategory" type="Training\FlatIndexer\Model\Indexer\Flat"> <arguments> <argument name="tableBuilder" xsi:type="object">tableBuilderCategory</argument> <argument name="tablePopulator" xsi:type="object">tablePopulatorCategory</argument> </arguments> </virtualType> <type name="Training\FlatIndexer\Model\ResourceModel\Metadata"> <arguments> <argument name="systemAttributeCodes" xsi:type="array"> <item name="status" xsi:type="string">status</item> <item name="visibility" xsi:type="string">visibility</item> <item name="type_id" xsi:type="string">type_id</item> <item name="attribute_set_id" xsi:type="string">attribute_set_id</item> <item name="required_options" xsi:type="string">required_options</item> </argument> </arguments> </type>

Page 13: Magento 2.x. Samo życie.

WebAPI ● REST

● swagger

● SOAP

● automatyczne WSDL

● AMPQ (RabbitMQ w Magento 2 Enterprise)

Page 14: Magento 2.x. Samo życie.

Alan Kent Główny architekt Magento

https://alankent.me/Alan Storm

Freelancer, konsultant, twórca CommerceBug

http://alanstorm.com/category/magento-2

Dokumentacja Magento 2

http://devdocs.magento.com/

Magento na StackExchange

http://magento.stackexchange.com/

Page 15: Magento 2.x. Samo życie.

Dziękuje za uwagę!

[email protected]

@mamut144