Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Whats new in Magento 2

James Cowie
September 17, 2015

Whats new in Magento 2

An overview of what has changed since Magento 1 and what to expect as a developer

James Cowie

September 17, 2015
Tweet

More Decks by James Cowie

Other Decks in Technology

Transcript

  1. 5

  2. 8 • Server Architecture • TDD • BDD • DDD

    Cloud Docker VPS PHPSpec - 2011 Behat - 2011
  3. 11

  4. 1 /** 2 * @var League\Period\Period; 3 */ 4 protected

    $_datePeriod; 5 6 /** 7 * @param \League\Period\Period; $datePeriod 8 */ 9 public function __construct(\League\Period\Period $datePeriod) 10 { 11 $this->_datePeriod = $datePeriod; 12 }
  5. 27 • No Dependency Injection container. • Mage god class

    • Hard to test • Hard to decouple logic
  6. public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Catalog\Model\Design $catalogDesign, \Magento\Catalog\Model\Session $catalogSession, \Magento\Framework\Registry

    $coreRegistry, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator, PageFactory $resultPageFactory, \Magento\Framework\Controller\Result\ForwardFactory $resultForwardFactory, Resolver $layerResolver, CategoryRepositoryInterface $categoryRepository \Magento\Framework\App\Action\Context $context, \Magento\Catalog\Model\Design $catalogDesign, \Magento\Catalog\Model\Session $catalogSession, \Magento\Framework\Registry $coreRegistry, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator
  7. public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Catalog\Model\Design $catalogDesign, \Magento\Catalog\Model\Session $catalogSession, \Magento\Framework\Registry

    $coreRegistry, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator, PageFactory $resultPageFactory, \Magento\Framework\Controller\Result\ForwardFactory $resultForwardFactory, Resolver $layerResolver, CategoryRepositoryInterface $categoryRepository \Magento\Framework\App\Action\Context $context, \Magento\Catalog\Model\Design $catalogDesign, \Magento\Catalog\Model\Session $catalogSession, \Magento\Framework\Registry $coreRegistry, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator Code Smell
  8. 1 <?php 2 class Sample 3 { 4 protected $logger;

    5 6 public function doSomething() 7 { 8 $this->logger = new \Logger(); 9 $logger->doSomething(); 10 } 11 }
  9. 1 <?php 2 class Sample 3 { 4 protected $logger;

    5 6 public function doSomething() 7 { 8 $this->logger = new \Logger(); 9 $logger->doSomething(); 10 } 11 }
  10. 1 <?php 2 class SampleDi { 3 protected $logger; 4

    public function __construct(\Logger $logger) { 5 $this->logger = $logger; 6 } 7 8 public function doSomething() { 9 $this->logger->doSomething(); 10 } 11 }
  11. 1 <?php 2 class SampleDi { 3 protected $logger; 4

    public function __construct(\Logger $logger) { 5 $this->logger = $logger; 6 } 7 8 public function doSomething() { 9 $this->logger->doSomething(); 10 } 11 }
  12. 1 <?php 2 class SampleDi { 3 protected $logger; 4

    public function __construct(\Logger $logger) { 5 $this->logger = $logger; 6 } 7 8 public function doSomething() { 9 $this->logger->doSomething(); 10 } 11 }
  13. <type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
 <arguments>
 <argument name="extensions" xsi:type="array">
 <item name="allowed" xsi:type="array">
 <item

    name="jpg" xsi:type="number">1</item>
 <item name="jpeg" xsi:type="number">1</item>
 <item name="png" xsi:type="number">1</item>
 <item name="gif" xsi:type="number">1</item>
 </item> </argument> </arguments> …
  14. <type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
 <arguments>
 <argument name="extensions" xsi:type="array">
 <item name="allowed" xsi:type="array">
 <item

    name="jpg" xsi:type="number">1</item>
 <item name="jpeg" xsi:type="number">1</item>
 <item name="png" xsi:type="number">1</item>
 <item name="gif" xsi:type="number">1</item>
 </item> </argument> </arguments> …
  15. <type name="Magento\Cms\Model\Wysiwyg\Images\Storage"> <arguments>
 <argument name="extensions" xsi:type="array">
 <item name="allowed" xsi:type="array">
 <item

    name="jpg" xsi:type="number">1</item>
 <item name="jpeg" xsi:type="number">1</item>
 <item name="png" xsi:type="number">1</item>
 <item name="gif" xsi:type="number">1</item>
 </item> </argument> </arguments> …
  16. <type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
 <arguments>
 <argument name="extensions" xsi:type="array">
 <item name="allowed" xsi:type="array">
 <item

    name="jpg" xsi:type="number">1</item>
 <item name="jpeg" xsi:type="number">1</item>
 <item name="png" xsi:type="number">1</item>
 <item name="gif" xsi:type="number">1</item>
 </item> </argument> </arguments> …
  17. 48 • Separating instantiation of objects from the object •

    Easier to test • Aids with Separation of concerns
  18. 53 • Composer can help create reusable packages • Dependency

    Injection is a must, • Yet be careful on how many dependencies are injected • Testing has become easier • Decoupling of modules is now easier • Magento 2 service contracts / Design by contract ( Interfaces )
  19. 55