{"id":81,"date":"2025-08-13T10:48:36","date_gmt":"2025-08-13T10:48:36","guid":{"rendered":"https:\/\/kishor10d.com\/blogs\/?p=81"},"modified":"2025-08-25T11:32:51","modified_gmt":"2025-08-25T11:32:51","slug":"understanding-the-abstract-factory-pattern-in-php","status":"publish","type":"post","link":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/","title":{"rendered":"Understanding the Abstract Factory Pattern in PHP"},"content":{"rendered":"<h1>Understanding the Abstract Factory Pattern in PHP<\/h1>\n<p>In object-oriented design, patterns provide a way to solve recurring design problems in a reusable manner. One such pattern is the\u00a0<strong>Abstract Factory Pattern<\/strong>, a creational design pattern that allows clients to create families of related or dependent objects without specifying their concrete classes. The key benefit of the Abstract Factory Pattern is that it provides an interface for creating families of related objects, and the client can remain unaware of the concrete classes of those objects.<\/p>\n<p>In this blog, we will dive deep into the\u00a0<strong>Abstract Factory Pattern<\/strong>\u00a0and demonstrate its implementation using\u00a0<strong>PHP<\/strong>.<\/p>\n<h2 id=\"when-to-use-the-abstract-factory-pattern\"><strong>When to Use the Abstract Factory Pattern?<\/strong><\/h2>\n<p>The Abstract Factory Pattern is ideal for situations where:<\/p>\n<ul>\n<li>You have a system that needs to create related objects, and the specific types of those objects should not be tightly coupled to the client code.<\/li>\n<li>You need to provide a way to create objects that are compatible with other products of the same family.<\/li>\n<li>The system needs to be flexible enough to work with different families of products without changing the client code.<\/li>\n<\/ul>\n<hr \/>\n<h2 id=\"example-use-case\"><strong>Example Use Case<\/strong><\/h2>\n<p>Imagine you\u2019re developing a software suite for a game that allows users to choose different themes, such as\u00a0<strong>LightTheme<\/strong>\u00a0and\u00a0<strong>DarkTheme<\/strong>. Each theme has a different set of components like buttons, text boxes, and checkboxes. Using the Abstract Factory Pattern, we can define interfaces for the components and create different families of related components (Light and Dark) without specifying their concrete classes.<\/p>\n<hr \/>\n<h2 id=\"abstract-factory-pattern-implementation-in-php\"><strong>Implementation of <\/strong><strong>Abstract Factory Pattern in PHP<\/strong><\/h2>\n<p>Let\u2019s implement the Abstract Factory Pattern in PHP by creating a simple example of a UI component factory that generates light and dark-themed buttons and checkboxes.<\/p>\n<h3 id=\"step-1-define-the-abstract-product-interfaces\"><strong>Step 1: Define the Abstract Product Interfaces<\/strong><\/h3>\n<p>We will start by defining the interfaces for the button and checkbox components.<\/p>\n<pre><code class=\"language-php\">\/\/ Abstract Product: Button\r\ninterface Button {\r\n    public function render(): string;\r\n}\r\n\r\n\/\/ Abstract Product: Checkbox\r\ninterface Checkbox {\r\n    public function render(): string;\r\n}\r\n<\/code><\/pre>\n<h3 id=\"step-2-create-concrete-products-for-light-theme\"><strong>Step 2: Create Concrete Products for Light Theme<\/strong><\/h3>\n<p>Next, we will implement the concrete products for the light theme.<\/p>\n<pre><code class=\"language-php\">\/\/ Concrete Product: Light Button\r\nclass LightButton implements Button {\r\n    public function render(): string {\r\n        return \"Rendering Light Button\";\r\n    }\r\n}\r\n\r\n\/\/ Concrete Product: Light Checkbox\r\nclass LightCheckbox implements Checkbox {\r\n    public function render(): string {\r\n        return \"Rendering Light Checkbox\";\r\n    }\r\n}\r\n<\/code><\/pre>\n<h3 id=\"step-3-create-concrete-products-for-dark-theme\"><strong>Step 3: Create Concrete Products for Dark Theme<\/strong><\/h3>\n<p>Now, let\u2019s create the dark-themed products.<\/p>\n<pre><code class=\"language-php\">\/\/ Concrete Product: Dark Button\r\nclass DarkButton implements Button {\r\n    public function render(): string {\r\n        return \"Rendering Dark Button\";\r\n    }\r\n}\r\n\r\n\/\/ Concrete Product: Dark Checkbox\r\nclass DarkCheckbox implements Checkbox {\r\n    public function render(): string {\r\n        return \"Rendering Dark Checkbox\";\r\n    }\r\n}\r\n<\/code><\/pre>\n<h3 id=\"step-4-define-the-abstract-factory-interface\"><strong>Step 4: Define the Abstract Factory Interface<\/strong><\/h3>\n<p>The Abstract Factory will declare methods for creating abstract products.<\/p>\n<pre><code class=\"language-php\">\/\/ Abstract Factory Interface\r\ninterface GUIFactory {\r\n    public function createButton(): Button;\r\n    public function createCheckbox(): Checkbox;\r\n}\r\n<\/code><\/pre>\n<h3 id=\"step-5-implement-concrete-factories-for-light-and-dark-themes\"><strong>Step 5: Implement Concrete Factories for Light and Dark Themes<\/strong><\/h3>\n<p>Now, we implement the concrete factories that instantiate the appropriate products based on the theme selected.<\/p>\n<pre><code class=\"language-php\">\/\/ Concrete Factory: Light Theme Factory\r\nclass LightThemeFactory implements GUIFactory {\r\n    public function createButton(): Button {\r\n        return new LightButton();\r\n    }\r\n\r\n    public function createCheckbox(): Checkbox {\r\n        return new LightCheckbox();\r\n    }\r\n}\r\n\r\n\/\/ Concrete Factory: Dark Theme Factory\r\nclass DarkThemeFactory implements GUIFactory {\r\n    public function createButton(): Button {\r\n        return new DarkButton();\r\n    }\r\n\r\n    public function createCheckbox(): Checkbox {\r\n        return new DarkCheckbox();\r\n    }\r\n}\r\n<\/code><\/pre>\n<h3 id=\"step-6-client-code\"><strong>Step 6: Client Code<\/strong><\/h3>\n<p>Finally, the client will use the Abstract Factory interface to create objects without worrying about their concrete types.<\/p>\n<pre><code class=\"language-php\">\/\/ Client Code\r\nclass Application {\r\n    private $button;\r\n    private $checkbox;\r\n\r\n    public function __construct(GUIFactory $factory) {\r\n        $this-&gt;button = $factory-&gt;createButton();\r\n        $this-&gt;checkbox = $factory-&gt;createCheckbox();\r\n    }\r\n\r\n    public function renderUI() {\r\n        echo $this-&gt;button-&gt;render() . \"\\n\";\r\n        echo $this-&gt;checkbox-&gt;render() . \"\\n\";\r\n    }\r\n}\r\n\r\n\/\/ Usage\r\n$lightFactory = new LightThemeFactory();\r\n$appLight = new Application($lightFactory);\r\n$appLight-&gt;renderUI();\r\n\r\necho \"\\n\";\r\n\r\n$darkFactory = new DarkThemeFactory();\r\n$appDark = new Application($darkFactory);\r\n$appDark-&gt;renderUI();\r\n<\/code><\/pre>\n<h3 id=\"output\"><strong>Output:<\/strong><\/h3>\n<pre><code>Rendering Light Button\r\nRendering Light Checkbox\r\n\r\nRendering Dark Button\r\nRendering Dark Checkbox\r\n<\/code><\/pre>\n<hr \/>\n<h2 id=\"conclusion\"><strong>Conclusion<\/strong><\/h2>\n<p>The Abstract Factory Pattern provides a flexible solution to create families of related objects without exposing their concrete classes. In the example above, we demonstrated how different families of UI components (light and dark themes) could be created dynamically at runtime using abstract factories, helping you decouple the client code from the concrete implementations.<\/p>\n<h3 id=\"benefits-of-the-abstract-factory-pattern\"><strong>Benefits of the Abstract Factory Pattern<\/strong><\/h3>\n<ul>\n<li><strong>Flexibility<\/strong>: The client can switch between different families of products easily.<\/li>\n<li><strong>Decoupling<\/strong>: The client does not need to know the exact concrete classes of the products it uses.<\/li>\n<li><strong>Extensibility<\/strong>: Adding new families of related products is easy without changing the client code.<\/li>\n<\/ul>\n<p>The Abstract Factory Pattern is widely used in frameworks and libraries where you need to create families of objects that work together seamlessly while keeping your system open for extension and closed for modification.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Understanding the Abstract Factory Pattern in PHP In object-oriented design, patterns provide a way to solve recurring design problems in a reusable manner. One such&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[67,5,17],"tags":[93,78,85,64,62,94,96,63,59,87,61,65,95],"class_list":["post-81","post","type-post","status-publish","format-standard","hentry","category-design-patterns","category-php","category-programming","tag-abstract-factory-pattern-php","tag-creational-design-patterns","tag-design-patterns-in-php","tag-maintainable-php-code","tag-object-oriented-php","tag-php-abstract-factory-example","tag-php-abstract-factory-implementation","tag-php-best-practices","tag-php-design-patterns","tag-php-oop-patterns","tag-php-software-architecture","tag-scalable-php-applications","tag-ui-component-factory-php"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Understanding the Abstract Factory Pattern in PHP - Practical Kishor<\/title>\n<meta name=\"description\" content=\"the\u00a0Abstract Factory Pattern, allows clients to create families of related or dependent objects without specifying their concrete classes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Understanding the Abstract Factory Pattern in PHP - Practical Kishor\" \/>\n<meta property=\"og:description\" content=\"the\u00a0Abstract Factory Pattern, allows clients to create families of related or dependent objects without specifying their concrete classes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Practical Kishor\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-13T10:48:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-25T11:32:51+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/kishor10d.com\/blogs\/#\/schema\/person\/682d05c56912dd235403d4d49862750a\"},\"headline\":\"Understanding the Abstract Factory Pattern in PHP\",\"datePublished\":\"2025-08-13T10:48:36+00:00\",\"dateModified\":\"2025-08-25T11:32:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/\"},\"wordCount\":540,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kishor10d.com\/blogs\/#\/schema\/person\/682d05c56912dd235403d4d49862750a\"},\"keywords\":[\"Abstract Factory Pattern PHP\",\"Creational Design Patterns\",\"Design Patterns in PHP\",\"Maintainable PHP Code\",\"Object Oriented PHP\",\"PHP Abstract Factory Example\",\"PHP Abstract Factory Implementation\",\"PHP Best Practices\",\"PHP Design Patterns\",\"PHP OOP Patterns\",\"PHP Software Architecture\",\"Scalable PHP Applications\",\"UI Component Factory PHP\"],\"articleSection\":[\"Design Patterns\",\"PHP\",\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/\",\"url\":\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/\",\"name\":\"Understanding the Abstract Factory Pattern in PHP - Practical Kishor\",\"isPartOf\":{\"@id\":\"https:\/\/kishor10d.com\/blogs\/#website\"},\"datePublished\":\"2025-08-13T10:48:36+00:00\",\"dateModified\":\"2025-08-25T11:32:51+00:00\",\"description\":\"the\u00a0Abstract Factory Pattern, allows clients to create families of related or dependent objects without specifying their concrete classes.\",\"breadcrumb\":{\"@id\":\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kishor10d.com\/blogs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Understanding the Abstract Factory Pattern in PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kishor10d.com\/blogs\/#website\",\"url\":\"https:\/\/kishor10d.com\/blogs\/\",\"name\":\"Practical Kishor\",\"description\":\"The quick brown fox jumps over the lazy dog\",\"publisher\":{\"@id\":\"https:\/\/kishor10d.com\/blogs\/#\/schema\/person\/682d05c56912dd235403d4d49862750a\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kishor10d.com\/blogs\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/kishor10d.com\/blogs\/#\/schema\/person\/682d05c56912dd235403d4d49862750a\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/56b0564d13413fec0713653cf76e91ba4d9c5fbbf6dbe0a8adbd3941c88bc1e4?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56b0564d13413fec0713653cf76e91ba4d9c5fbbf6dbe0a8adbd3941c88bc1e4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56b0564d13413fec0713653cf76e91ba4d9c5fbbf6dbe0a8adbd3941c88bc1e4?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"logo\":{\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/56b0564d13413fec0713653cf76e91ba4d9c5fbbf6dbe0a8adbd3941c88bc1e4?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\/\/kishor10d.com\/blogs\"],\"url\":\"https:\/\/kishor10d.com\/blogs\/author\/kishor10d\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Understanding the Abstract Factory Pattern in PHP - Practical Kishor","description":"the\u00a0Abstract Factory Pattern, allows clients to create families of related or dependent objects without specifying their concrete classes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/","og_locale":"en_US","og_type":"article","og_title":"Understanding the Abstract Factory Pattern in PHP - Practical Kishor","og_description":"the\u00a0Abstract Factory Pattern, allows clients to create families of related or dependent objects without specifying their concrete classes.","og_url":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/","og_site_name":"Practical Kishor","article_published_time":"2025-08-13T10:48:36+00:00","article_modified_time":"2025-08-25T11:32:51+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/#article","isPartOf":{"@id":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/"},"author":{"name":"admin","@id":"https:\/\/kishor10d.com\/blogs\/#\/schema\/person\/682d05c56912dd235403d4d49862750a"},"headline":"Understanding the Abstract Factory Pattern in PHP","datePublished":"2025-08-13T10:48:36+00:00","dateModified":"2025-08-25T11:32:51+00:00","mainEntityOfPage":{"@id":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/"},"wordCount":540,"commentCount":0,"publisher":{"@id":"https:\/\/kishor10d.com\/blogs\/#\/schema\/person\/682d05c56912dd235403d4d49862750a"},"keywords":["Abstract Factory Pattern PHP","Creational Design Patterns","Design Patterns in PHP","Maintainable PHP Code","Object Oriented PHP","PHP Abstract Factory Example","PHP Abstract Factory Implementation","PHP Best Practices","PHP Design Patterns","PHP OOP Patterns","PHP Software Architecture","Scalable PHP Applications","UI Component Factory PHP"],"articleSection":["Design Patterns","PHP","Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/","url":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/","name":"Understanding the Abstract Factory Pattern in PHP - Practical Kishor","isPartOf":{"@id":"https:\/\/kishor10d.com\/blogs\/#website"},"datePublished":"2025-08-13T10:48:36+00:00","dateModified":"2025-08-25T11:32:51+00:00","description":"the\u00a0Abstract Factory Pattern, allows clients to create families of related or dependent objects without specifying their concrete classes.","breadcrumb":{"@id":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kishor10d.com\/blogs\/understanding-the-abstract-factory-pattern-in-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kishor10d.com\/blogs\/"},{"@type":"ListItem","position":2,"name":"Understanding the Abstract Factory Pattern in PHP"}]},{"@type":"WebSite","@id":"https:\/\/kishor10d.com\/blogs\/#website","url":"https:\/\/kishor10d.com\/blogs\/","name":"Practical Kishor","description":"The quick brown fox jumps over the lazy dog","publisher":{"@id":"https:\/\/kishor10d.com\/blogs\/#\/schema\/person\/682d05c56912dd235403d4d49862750a"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kishor10d.com\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/kishor10d.com\/blogs\/#\/schema\/person\/682d05c56912dd235403d4d49862750a","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/56b0564d13413fec0713653cf76e91ba4d9c5fbbf6dbe0a8adbd3941c88bc1e4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/56b0564d13413fec0713653cf76e91ba4d9c5fbbf6dbe0a8adbd3941c88bc1e4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56b0564d13413fec0713653cf76e91ba4d9c5fbbf6dbe0a8adbd3941c88bc1e4?s=96&d=mm&r=g","caption":"admin"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/56b0564d13413fec0713653cf76e91ba4d9c5fbbf6dbe0a8adbd3941c88bc1e4?s=96&d=mm&r=g"},"sameAs":["https:\/\/kishor10d.com\/blogs"],"url":"https:\/\/kishor10d.com\/blogs\/author\/kishor10d\/"}]}},"_links":{"self":[{"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/posts\/81","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/comments?post=81"}],"version-history":[{"count":3,"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/posts\/81\/revisions"}],"predecessor-version":[{"id":108,"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/posts\/81\/revisions\/108"}],"wp:attachment":[{"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/media?parent=81"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/categories?post=81"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kishor10d.com\/blogs\/wp-json\/wp\/v2\/tags?post=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}