{"id":15461,"date":"2018-04-10T14:29:31","date_gmt":"2018-04-10T11:29:31","guid":{"rendered":"https:\/\/belvg.com\/blog\/?p=15461"},"modified":"2021-02-18T15:15:03","modified_gmt":"2021-02-18T13:15:03","slug":"magento-2-module-based-architecture","status":"publish","type":"post","link":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html","title":{"rendered":"Magento 2 Module-based Architecture Guide"},"content":{"rendered":"\n<p>In this article we are going to dive into&nbsp;Magento&rsquo;s module-based architecture description and MVVM architecture.&nbsp;You will learn the fundamentals of each of the 4 layers of Magento 2&nbsp;architecture.&nbsp;Understanding layered software pattern is essential for understanding basic Magento product organization.&nbsp;Below you can see the list of questions answered in the article.<\/p>\n<p><!--more--><\/p>\n<p><a href=\"#step_1\">What is Magento&rsquo;s module-based architecture?<\/a><br>\n<a href=\"#step_2\">What are module limitations?<\/a><br>\n<a href=\"#step_3\">How do different modules interact with each other?<\/a><br>\n<a href=\"#step_4\">What side effects can come from this interaction?<\/a><\/p>\n<h2><strong><span style=\"color: #000000;\"><a id=\"step_1\"><\/a>Magento&rsquo;s module-based architecture description<\/span><\/strong><\/h2>\n<p>Modules in Magento 2 are implemented by means of MVVM architecture.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter size-full wp-image-15470\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/04\/MVVMPattern.png\" alt=\"MVVMPattern\" width=\"771\" height=\"232\" title=\"Magento 2 Module-based Architecture Guide\"><\/p>\n<p>MVVM is divided into 3 layers:<\/p>\n<ol>\n<li><strong><span style=\"color: #000000;\">Model<\/span>.<\/strong> Just like in classic MVC, Model is the logic of data management and a description of the fundamental data, necessary for the operation of the application.<\/li>\n<li><strong><span style=\"color: #000000;\">View<\/span>.<\/strong>&nbsp;View is a graphical interface, e.g. windows, buttons, etc. View is a subscriber to changes of the property values or commands provided by the View Model. In case a property changes in the View Model, it notifies all subscribers about this, and the View, in its turn, requests an updated property value from the View Model. If a user is manipulating an element of the interface, the View invokes the appropriate command provided by the View Model.<\/li>\n<li><strong><span style=\"color: #000000;\">View Model.<\/span>&nbsp;<\/strong>The view model is an abstraction of the view exposing public properties and commands. It contains a Model that is converted to a View, and also contains the commands that the View can use to influence the Model.<\/li>\n<\/ol>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"lazy aligncenter size-full wp-image-15471\" src=\"https:\/\/belvg.com\/wp-content\/uploads\/2019\/06\/pixel.png\" data-src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/04\/archi_diagrams_layers_alt4.jpg\" alt=\"archi_diagrams_layers_alt4\" width=\"720\" height=\"540\" title=\"Magento 2 Module-based Architecture Guide\"><\/p>\n<p>According to the official documentation, Magento 2 architecture is split into 4 layers.<\/p>\n<ol>\n<li><span style=\"color: #000000;\"><strong>Presentation Layer.<\/strong><\/span><\/li>\n<\/ol>\n<p style=\"padding-left: 30px;\">Presentation Layer is the upper layer. It contains all the View elements (including layouts, blocks, templates, css, js) and controllers.<\/p>\n<p style=\"padding-left: 30px;\">Presentation Layer usually calls service layer using service contracts. But, depending on the implementation, it may overlap with business logic.<\/p>\n<ol start=\"2\">\n<li><span style=\"color: #000000;\"><strong>Service layer.&nbsp;<\/strong><\/span><\/li>\n<\/ol>\n<p style=\"padding-left: 30px;\">Service layer is an interlayer between presentation layer and domain layer. It implements service contracts, which are defined using PHP interfaces. Service contracts allow to add or change business logic resource model using dependency injection file <strong>(di.xml)<\/strong>. Service layer is also used for granting access to API (REST\/SOAP or other modules).<\/p>\n<p style=\"padding-left: 30px;\">Service interface is declared in<em><strong>&nbsp;<\/strong><\/em><strong>\/Api<\/strong>&nbsp;namespace of the module.<\/p>\n<p style=\"padding-left: 30px;\">Data (entity) interface is declared in <strong>\/Api\/Data<\/strong>. Data entities are data structures passed to and returned from service interfaces.<\/p>\n<ol start=\"3\">\n<li><span style=\"color: #000000;\"><strong>Domain layer.&nbsp;<\/strong><\/span><\/li>\n<\/ol>\n<p style=\"padding-left: 30px;\">Domain layer is responsible for the business logic, which does not contain resource-specific or database-specific information. Domain layer can also include service contracts.<\/p>\n<p style=\"padding-left: 30px;\">Each data model at the level of domain layer depends on the resource model, which is responsible for accessing the database.<\/p>\n<ol start=\"4\">\n<li><span style=\"color: #000000;\"><strong>Persistence layer.&nbsp;<\/strong><\/span><\/li>\n<\/ol>\n<p style=\"padding-left: 30px;\">Persistence layer describes resource model, which is responsible for extracting and modifying data in the database using CRUD requests.<\/p>\n<p style=\"padding-left: 30px;\">Additional business logic capabilities are also implemented here, for example, data validation and database functions implementation.<\/p>\n<h2><strong><span style=\"color: #000000;\"><a id=\"step_2\"><\/a>The limitations of the module<\/span><\/strong><\/h2>\n<p>Some modules may conflict with each other if the dependencies in <b>module.xml&nbsp;<\/b>(sequence) are incorrectly indicated.<\/p>\n<p>Not all standard classes can be redefined using modules.<\/p>\n<h2><strong><span style=\"color: #000000;\"><a id=\"step_3\"><\/a>The interaction between different modules<\/span><\/strong><\/h2>\n<p>Modules interact with each other using Dependency injection <strong>(di.xml)<\/strong> and layout files (\/view\/frontend\/layout, \/view\/adminhtml\/layout). They can also depend on other modules if they use their logic.<\/p>\n<h2><span style=\"color: #000000;\"><strong><a id=\"step_4\"><\/a>Side effects from&nbsp;the interaction between modules<\/strong><\/span><\/h2>\n<p>If modules use Dependency injection, they can load in the wrong order or try to redefine the already redefined functionality of the module. To solve this problem, you should use sequence in&nbsp;<b>module.xml<\/b>.<\/p>\n<p>If the modules use other modules&rsquo; logic and the module, whose logic is used, is disabled, dependencies will not be used and an error will occur when executing the code.<\/p>\n<p>That&rsquo;s it concerning&nbsp;Magento 2 module-based architecture, we hope you found it useful.&nbsp;By the way, we&nbsp;have an article,&nbsp;in which we compared the architecture of the two Magento versions, click <a href=\"https:\/\/belvg.com\/blog\/high-level-magento-architecture-magento-2-vs-magento-1.html\">here<\/a> to check it out.<\/p>\n<div class=\"module_in_content_container\"><a href=\"https:\/\/store.belvg.com\/\" class=\"link_to_module\" target=\"_blank\" rel=\"noopener\"><\/a><div class=\"module_content\"><img src=\"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2016\/05\/Magento-store.belvg_.com_.png\" width=\"481\" height=\"480\" alt=\"Magento store.belvg.com\" class=\"module_image\" title=\"Magento 2 Module-based Architecture Guide\"><div class=\"module_content_part\"><h3 class=\"title\">Magento Store BelVG<\/h3><p class=\"module_content_text\">Take your online store to the next level with Magento extensions from BelVG<\/p><a href=\"https:\/\/store.belvg.com\/\" class=\"link_2_to_module\" target=\"_blank\" style=\"display:inline-block\" rel=\"noopener\"><span class=\"read-more\">Visit the store<\/span><\/a><\/div><\/div><\/div>\n<p>Looking for a quality solution for your webstore?&nbsp;Check out BelVG&rsquo;s Magento extensions&nbsp;<a href=\"https:\/\/store.belvg.com\/\" target=\"_blank\" rel=\"noopener\">at our official store<\/a>.<\/p>\n\n","protected":false},"excerpt":{"rendered":"The description of Magento 2 Module-based Architecture","protected":false},"author":82,"featured_media":15469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"image","meta":{"_acf_changed":false,"footnotes":""},"categories":[35,389,524],"tags":[],"class_list":["post-15461","post","type-post","status-publish","format-image","has-post-thumbnail","hentry","category-certification","category-magento2-development","category-magento-speed-optimization","post_format-post-format-image"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"Pass Magento Certification: Describe Magento\u2019s module-based architecture, describe module limitations. How do different modules interact with each other? What side effects can come from this interaction? Find out all of it here.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andrey Litvin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#article\",\"name\":\"Magento 2 module-based architecture guide | BelVG Blog\",\"headline\":\"Magento 2 Module-based Architecture Guide\",\"author\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/andrey-litvin#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/Magento-2-Module-based-Architecture.jpg\",\"width\":770,\"height\":433},\"datePublished\":\"2018-04-10T14:29:31+02:00\",\"dateModified\":\"2021-02-18T15:15:03+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":6,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#webpage\"},\"articleSection\":\"Certification, Magento 2 Development, Magento Speed Optimization, Image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/belvg.com\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/certification#listItem\",\"name\":\"Certification\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/certification#listItem\",\"position\":2,\"name\":\"Certification\",\"item\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/certification\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#listItem\",\"name\":\"Magento 2 Module-based Architecture Guide\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#listItem\",\"position\":3,\"name\":\"Magento 2 Module-based Architecture Guide\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/category\\\/certification#listItem\",\"name\":\"Certification\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\",\"name\":\"BelVG Blog\",\"description\":\"Magento and Prestashop articles\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/andrey-litvin#author\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/andrey-litvin\",\"name\":\"Andrey Litvin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e1a6e3c80cb940fddb65016d94b015cd951b4a8a9cd7227565131f28ea95c7a0?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andrey Litvin\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#webpage\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html\",\"name\":\"Magento 2 module-based architecture guide | BelVG Blog\",\"description\":\"Pass Magento Certification: Describe Magento\\u2019s module-based architecture, describe module limitations. How do different modules interact with each other? What side effects can come from this interaction? Find out all of it here.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/andrey-litvin#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/author\\\/andrey-litvin#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/Magento-2-Module-based-Architecture.jpg\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html\\\/#mainImage\",\"width\":770,\"height\":433},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/magento-2-module-based-architecture.html#mainImage\"},\"datePublished\":\"2018-04-10T14:29:31+02:00\",\"dateModified\":\"2021-02-18T15:15:03+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/belvg.com\\\/blog\\\/\",\"name\":\"BelVG Blog\",\"description\":\"Magento and Prestashop articles\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/belvg.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Magento 2 module-based architecture guide | BelVG Blog","description":"Pass Magento Certification: Describe Magento\u2019s module-based architecture, describe module limitations. How do different modules interact with each other? What side effects can come from this interaction? Find out all of it here.","canonical_url":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#article","name":"Magento 2 module-based architecture guide | BelVG Blog","headline":"Magento 2 Module-based Architecture Guide","author":{"@id":"https:\/\/belvg.com\/blog\/author\/andrey-litvin#author"},"publisher":{"@id":"https:\/\/belvg.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/04\/Magento-2-Module-based-Architecture.jpg","width":770,"height":433},"datePublished":"2018-04-10T14:29:31+02:00","dateModified":"2021-02-18T15:15:03+02:00","inLanguage":"en-US","commentCount":6,"mainEntityOfPage":{"@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#webpage"},"isPartOf":{"@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#webpage"},"articleSection":"Certification, Magento 2 Development, Magento Speed Optimization, Image"},{"@type":"BreadcrumbList","@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/belvg.com\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/category\/certification#listItem","name":"Certification"}},{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/category\/certification#listItem","position":2,"name":"Certification","item":"https:\/\/belvg.com\/blog\/category\/certification","nextItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#listItem","name":"Magento 2 Module-based Architecture Guide"},"previousItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#listItem","position":3,"name":"Magento 2 Module-based Architecture Guide","previousItem":{"@type":"ListItem","@id":"https:\/\/belvg.com\/blog\/category\/certification#listItem","name":"Certification"}}]},{"@type":"Organization","@id":"https:\/\/belvg.com\/blog\/#organization","name":"BelVG Blog","description":"Magento and Prestashop articles","url":"https:\/\/belvg.com\/blog\/"},{"@type":"Person","@id":"https:\/\/belvg.com\/blog\/author\/andrey-litvin#author","url":"https:\/\/belvg.com\/blog\/author\/andrey-litvin","name":"Andrey Litvin","image":{"@type":"ImageObject","@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/e1a6e3c80cb940fddb65016d94b015cd951b4a8a9cd7227565131f28ea95c7a0?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andrey Litvin"}},{"@type":"WebPage","@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#webpage","url":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html","name":"Magento 2 module-based architecture guide | BelVG Blog","description":"Pass Magento Certification: Describe Magento\u2019s module-based architecture, describe module limitations. How do different modules interact with each other? What side effects can come from this interaction? Find out all of it here.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/belvg.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#breadcrumblist"},"author":{"@id":"https:\/\/belvg.com\/blog\/author\/andrey-litvin#author"},"creator":{"@id":"https:\/\/belvg.com\/blog\/author\/andrey-litvin#author"},"image":{"@type":"ImageObject","url":"https:\/\/belvg.com\/blog\/wp-content\/uploads\/2018\/04\/Magento-2-Module-based-Architecture.jpg","@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html\/#mainImage","width":770,"height":433},"primaryImageOfPage":{"@id":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html#mainImage"},"datePublished":"2018-04-10T14:29:31+02:00","dateModified":"2021-02-18T15:15:03+02:00"},{"@type":"WebSite","@id":"https:\/\/belvg.com\/blog\/#website","url":"https:\/\/belvg.com\/blog\/","name":"BelVG Blog","description":"Magento and Prestashop articles","inLanguage":"en-US","publisher":{"@id":"https:\/\/belvg.com\/blog\/#organization"}}]}},"aioseo_meta_data":{"post_id":"15461","title":"Magento 2 module-based architecture guide | #site_title","description":"Pass Magento Certification: Describe Magento\u2019s module-based architecture, describe module limitations. How do different modules interact with each other? What side effects can come from this interaction? Find out all of it here.","keywords":null,"keyphrases":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-11-03 18:37:10","updated":"2026-11-03 18:37:10"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/belvg.com\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/belvg.com\/blog\/category\/certification\" title=\"Certification\">Certification<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tMagento 2 Module-based Architecture Guide\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/belvg.com\/blog\/"},{"label":"Certification","link":"https:\/\/belvg.com\/blog\/category\/certification"},{"label":"Magento 2 Module-based Architecture Guide","link":"https:\/\/belvg.com\/blog\/magento-2-module-based-architecture.html"}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/15461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/users\/82"}],"replies":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/comments?post=15461"}],"version-history":[{"count":6,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/15461\/revisions"}],"predecessor-version":[{"id":25908,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/posts\/15461\/revisions\/25908"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/media\/15469"}],"wp:attachment":[{"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/media?parent=15461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/categories?post=15461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/belvg.com\/blog\/wp-json\/wp\/v2\/tags?post=15461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}