{"id":5218,"date":"2025-12-18T12:08:49","date_gmt":"2025-12-18T11:08:49","guid":{"rendered":"https:\/\/sutilweb.eu\/?page_id=5218"},"modified":"2025-12-18T12:08:50","modified_gmt":"2025-12-18T11:08:50","slug":"24-interfaces-en-php","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/php\/php-practico\/24-interfaces-en-php\/","title":{"rendered":"24. Interfaces en PHP"},"content":{"rendered":"\n<p>A veces es necesario que un equipo de varias personas trabajen juntas, en este caso se hace imprescindible definir unas pautas generales de trabajo para que el resultado final sea el esperado. Si el desarrollo consiste en programar varios objetos, el analista de la aplicaci\u00f3n puede definir la estructura b\u00e1sica en papel o crear una peque\u00f1a plantilla con m\u00e9todos que el objeto final deber\u00eda tener obligatoriamente. Esta plantilla se la conoce como <strong>interface,<\/strong> y permite establecer una clase con funciones definidas pero sin desarrollarla, que obliga a todas las clases que lo implemente declarar estos m\u00e9todos como m\u00ednimos.<\/p>\n\n\n\n<p>En otras palabras, las interfaces son <strong>plantillas<\/strong>.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  &lt;?php\n\n  \/\/ Los que definen las interfaces normalmente son los analistas del proyecto\n  interface iTemplate {\n    public function setVariable($name);\n    public function getHtml();\n  }\n\n  class Template implements iTemplate {\n    public function setVariable($name){\n    }\n\n    public function getHtml(){\n    }\n }<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Extensi\u00f3n<\/h2>\n\n\n\n<p>En las interfaces tambi\u00e9n existe el concepto de&nbsp;<strong>extensi\u00f3n<\/strong>.<\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  &lt;?php\n\n  \/\/ Concepto de extensi\u00f3n\n  interface a {\n    public function prueba();\n  }\n\n  interface b extends a {\n    public function prueba2();\n  }\n\n  \/\/ La interfaz b tiene dos m\u00e9todos, prueba() y prueba2(), el primer m\u00e9todo se ha extendido \n  \/\/ de la interfaz a y el segundo es propio de la interfaz b\n\n  class c implements b {\n    public function prueba(){};\n    public function prueba2(){};\n  }\n\n  \/\/ Hemos de incluir ambos m\u00e9todos de las interfaces<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Herencia m\u00faltiple<\/h2>\n\n\n\n<p>Las interfaces tambi\u00e9n aceptan&nbsp;<strong>herencia m\u00faltiple.<\/strong><\/p>\n\n\n\n<p><strong>Ejm<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  &lt;?php\n\n  \/\/ Concepto de herencia m\u00faltiple\n\n  interface a {\n    public function prueba();\n  }\n\n  interface b extends a {\n    public function prueba2();\n  }\n\n  interface c extends a, b {\n    function prueba3();\n  }\n\n  \/\/ La interfaz c hereda tanto de la interfaz a como de la interfaz b\n\n  class d implements c {\n    public function prueba(){};\n    public function prueba2(){};\n    public function prueba3(){};\n  }<\/code><\/pre>\n\n\n\n<p>Como vemos, la interfaz <strong><em>c<\/em><\/strong> hereda de <strong><em>a<\/em><\/strong> y <strong><em>b<\/em><\/strong>, por lo que si creamos una clase basada en dicha interfaz, hay que utilizar todos los m\u00e9todos de las interfaces <strong><em>a<\/em><\/strong> y <strong><em>b<\/em><\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A veces es necesario que un equipo de varias personas trabajen juntas, en este caso se hace imprescindible definir unas [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4518,"menu_order":23,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5218","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"A veces es necesario que un equipo de varias personas trabajen juntas, en este caso se hace imprescindible definir unas [&hellip;]","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=5218"}],"version-history":[{"count":5,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5218\/revisions"}],"predecessor-version":[{"id":5223,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5218\/revisions\/5223"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/4518"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=5218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}