{"id":8048,"date":"2024-12-17T04:39:23","date_gmt":"2024-12-17T04:39:23","guid":{"rendered":"https:\/\/studysection.com\/blog\/?p=8048"},"modified":"2024-12-17T05:26:00","modified_gmt":"2024-12-17T05:26:00","slug":"adapter-pattern-with-example-in-php","status":"publish","type":"post","link":"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/","title":{"rendered":"Adapter Pattern with Example in PHP"},"content":{"rendered":"<p>In software development, especially in object-oriented programming, designing systems that are flexible and maintainable is crucial. One challenge that often arises is integrating existing classes or components that have incompatible interfaces. This is the situation in which the Adapter design pattern is useful. The Adapter pattern allows objects with incompatible interfaces to work together seamlessly by acting as a bridge between them.<br \/>\nIn this blog post, we&#8217;ll delve into the Adapter design pattern, its structure, and implementation in PHP with real-world examples.<\/p>\n<p><strong>Understanding the Adapter Pattern:<\/strong><\/p>\n<p>The Adapter pattern is a structural design pattern categorized under the &#8220;Gang of Four&#8221; design patterns. It enables communication between two incompatible interfaces by wrapping an existing class with a new interface. This allows the classes to work together without modifying their original code.<\/p>\n<p><strong>Key Components of the Adapter Pattern:<\/strong><\/p>\n<p>Target: This defines the interface that the client code expects to interact with.<br \/>\nAdaptee: This is the existing class with an incompatible interface that needs to be integrated.<br \/>\nAdapter: This is the class that adapts the Adapter&#8217;s interface to match the Target interface, allowing them to work together seamlessly.<\/p>\n<p><strong>Example: Adapting a Square Class to a Shape Interface<\/strong><\/p>\n<p>Let&#8217;s consider a scenario where we have an existing Square class that calculates the area of a square:<\/p>\n<p><code>class Square {<br \/>\npublic function calculateArea($side) {<br \/>\nreturn $side * $side;<br \/>\n}<br \/>\n}<\/code><\/p>\n<p>However, the client code expects objects to have a getArea() method instead of calculateArea(). We can implement the Adapter pattern to adapt the Square class to the Shape interface:<\/p>\n<p><code>interface Shape {<br \/>\npublic function getArea();<br \/>\n}<br \/>\nclass SquareAdapter implements Shape {<br \/>\nprivate $square;<br \/>\npublic function __construct(Square $square) {<br \/>\n$this-&gt;square = $square;<br \/>\n}<br \/>\npublic function getArea() {<br \/>\nreturn $this-&gt;square-&gt;calculateArea($this-&gt;getSide());<br \/>\n}<br \/>\nprivate function getSide() {<br \/>\n\/\/ Logic to calculate the side of the square<br \/>\nreturn 5; \/\/ Hardcoded side for demonstration<br \/>\n}<br \/>\n}<\/code><\/p>\n<p>In this example, the SquareAdapter class acts as a bridge between the client code and the existing Square class by adapting its interface to match the Shape interface.<\/p>\n<p><strong>Usage of the Adapter:<\/strong><\/p>\n<p>Now, let&#8217;s see how we can use the SquareAdapter with the client code:<\/p>\n<p><code>$square = new Square();<br \/>\n$adapter = new SquareAdapter($square);<br \/>\necho $adapter-&gt;getArea(); \/\/ Output: 25 (5 * 5)<\/code><\/p>\n<p><strong>Conclusion:<\/strong><\/p>\n<p>The Adapter pattern is a powerful tool for integrating incompatible interfaces in software systems. By wrapping existing classes with new interfaces, the Adapter pattern promotes code reusability and maintainability. In this blog post, we explored the Adapter pattern in <a href=\"https:\/\/studysection.com\/blog\/table-module-pattern-with-an-example-in-php\/\">PHP<\/a> with a real-world example, demonstrating its practical application in software development.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In software development, especially in object-oriented programming, designing systems that are flexible and maintainable is crucial. One challenge that often<\/p>\n","protected":false},"author":1,"featured_media":8050,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Adapter Design Pattern with Example in PHP<\/title>\n<meta name=\"description\" content=\"In software development, delve into the Adapter design pattern, its structure, and implementation in PHP with real-world examples.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Adapter Design Pattern with Example in PHP\" \/>\n<meta property=\"og:description\" content=\"In software development, delve into the Adapter design pattern, its structure, and implementation in PHP with real-world examples.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Posts on famous people, innovations and educational topics\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/studysection\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-17T04:39:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-17T05:26:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2024\/12\/Add-a-subheading-25.png\" \/>\n\t<meta property=\"og:image:width\" content=\"940\" \/>\n\t<meta property=\"og:image:height\" content=\"788\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin-studysection-blog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@studysection\" \/>\n<meta name=\"twitter:site\" content=\"@studysection\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin-studysection-blog\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/\"},\"author\":{\"name\":\"admin-studysection-blog\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\"},\"headline\":\"Adapter Pattern with Example in PHP\",\"datePublished\":\"2024-12-17T04:39:23+00:00\",\"dateModified\":\"2024-12-17T05:26:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/\"},\"wordCount\":344,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"articleSection\":[\"Learn and Grow\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/\",\"url\":\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/\",\"name\":\"Adapter Design Pattern with Example in PHP\",\"isPartOf\":{\"@id\":\"https:\/\/studysection.com\/blog\/#website\"},\"datePublished\":\"2024-12-17T04:39:23+00:00\",\"dateModified\":\"2024-12-17T05:26:00+00:00\",\"description\":\"In software development, delve into the Adapter design pattern, its structure, and implementation in PHP with real-world examples.\",\"breadcrumb\":{\"@id\":\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/studysection.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Adapter Pattern with Example in PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/studysection.com\/blog\/#website\",\"url\":\"https:\/\/studysection.com\/blog\/\",\"name\":\"Blog Posts on famous people, innovations and educational topics\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/studysection.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/studysection.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/studysection.com\/blog\/#organization\",\"name\":\"StudySection\",\"url\":\"https:\/\/studysection.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png\",\"contentUrl\":\"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png\",\"width\":920,\"height\":440,\"caption\":\"StudySection\"},\"image\":{\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/studysection\",\"https:\/\/twitter.com\/studysection\",\"https:\/\/www.instagram.com\/study.section\/\",\"https:\/\/www.linkedin.com\/company\/studysection\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402\",\"name\":\"admin-studysection-blog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/studysection.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g\",\"caption\":\"admin-studysection-blog\"},\"url\":\"https:\/\/studysection.com\/blog\/author\/admin-studysection-blog\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Adapter Design Pattern with Example in PHP","description":"In software development, delve into the Adapter design pattern, its structure, and implementation in PHP with real-world examples.","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:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/","og_locale":"en_US","og_type":"article","og_title":"Adapter Design Pattern with Example in PHP","og_description":"In software development, delve into the Adapter design pattern, its structure, and implementation in PHP with real-world examples.","og_url":"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/","og_site_name":"Blog Posts on famous people, innovations and educational topics","article_publisher":"https:\/\/www.facebook.com\/studysection","article_published_time":"2024-12-17T04:39:23+00:00","article_modified_time":"2024-12-17T05:26:00+00:00","og_image":[{"width":940,"height":788,"url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2024\/12\/Add-a-subheading-25.png","type":"image\/png"}],"author":"admin-studysection-blog","twitter_card":"summary_large_image","twitter_creator":"@studysection","twitter_site":"@studysection","twitter_misc":{"Written by":"admin-studysection-blog","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/#article","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/"},"author":{"name":"admin-studysection-blog","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402"},"headline":"Adapter Pattern with Example in PHP","datePublished":"2024-12-17T04:39:23+00:00","dateModified":"2024-12-17T05:26:00+00:00","mainEntityOfPage":{"@id":"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/"},"wordCount":344,"commentCount":0,"publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"articleSection":["Learn and Grow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/","url":"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/","name":"Adapter Design Pattern with Example in PHP","isPartOf":{"@id":"https:\/\/studysection.com\/blog\/#website"},"datePublished":"2024-12-17T04:39:23+00:00","dateModified":"2024-12-17T05:26:00+00:00","description":"In software development, delve into the Adapter design pattern, its structure, and implementation in PHP with real-world examples.","breadcrumb":{"@id":"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/studysection.com\/blog\/adapter-pattern-with-example-in-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/studysection.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Adapter Pattern with Example in PHP"}]},{"@type":"WebSite","@id":"https:\/\/studysection.com\/blog\/#website","url":"https:\/\/studysection.com\/blog\/","name":"Blog Posts on famous people, innovations and educational topics","description":"","publisher":{"@id":"https:\/\/studysection.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/studysection.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/studysection.com\/blog\/#organization","name":"StudySection","url":"https:\/\/studysection.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png","contentUrl":"https:\/\/studysection.com\/blog\/wp-content\/uploads\/2021\/10\/studySection-logo.png","width":920,"height":440,"caption":"StudySection"},"image":{"@id":"https:\/\/studysection.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/studysection","https:\/\/twitter.com\/studysection","https:\/\/www.instagram.com\/study.section\/","https:\/\/www.linkedin.com\/company\/studysection"]},{"@type":"Person","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/db367e2c29a12d1808fb1979edb3d402","name":"admin-studysection-blog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/studysection.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/054ac87a6874df1932004239cd8eab36?s=96&d=mm&r=g","caption":"admin-studysection-blog"},"url":"https:\/\/studysection.com\/blog\/author\/admin-studysection-blog\/"}]}},"views":100,"_links":{"self":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/8048"}],"collection":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/comments?post=8048"}],"version-history":[{"count":4,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/8048\/revisions"}],"predecessor-version":[{"id":8053,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/posts\/8048\/revisions\/8053"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media\/8050"}],"wp:attachment":[{"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/media?parent=8048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/categories?post=8048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/studysection.com\/blog\/wp-json\/wp\/v2\/tags?post=8048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}