{"id":1043,"date":"2016-10-10T20:59:03","date_gmt":"2016-10-11T02:59:03","guid":{"rendered":"http:\/\/projectopy.com\/blog\/?p=1043"},"modified":"2016-10-10T20:59:03","modified_gmt":"2016-10-11T02:59:03","slug":"php-sobrecarga","status":"publish","type":"post","link":"https:\/\/iscodigo.com\/blog\/objetos\/php-sobrecarga\/","title":{"rendered":"PHP: Sobrecarga de Funciones"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_87 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Alternar tabla de contenidos\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/iscodigo.com\/blog\/objetos\/php-sobrecarga\/#Definicion\" >Definici\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/iscodigo.com\/blog\/objetos\/php-sobrecarga\/#Soluciones\" >Soluciones<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/iscodigo.com\/blog\/objetos\/php-sobrecarga\/#Valores_por_defecto\" >Valores por defecto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/iscodigo.com\/blog\/objetos\/php-sobrecarga\/#Funciones_variadicas\" >Funciones var\u00edadicas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/iscodigo.com\/blog\/objetos\/php-sobrecarga\/#Metodo_call\" >M\u00e9todo __call()<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Definicion\"><\/span>Definici\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Una caracter\u00edstica \u00fatil en el Programaci\u00f3n Orientada a Objetos es la sobrecarga (overload) &#8211;Evitar confundir con sobrescritura (overriding), que consiste en una nueva implementaci\u00f3n en los m\u00e9todos de una clase hija con respecto a los de su clase padre.<\/p>\n<p>En este caso la sobrecarga dicta que un objeto puede contener varios m\u00e9todos nombrados de la misma forma, la diferencia consiste en el n\u00famero de argumentos. Esto en PHP no es posible.<\/p>\n<pre class=\"lang:php decode:true\" title=\"Intento de sobrecarga\">&lt;?php\n\nclass Prueba\n{\n    public static function saludar()\n    {\n        echo 'Hola';\n    }\n\n    public static function saludar($argumento)\n    {\n        echo 'Hola ', $argumento;\n    }\n}\n\n\/*\nPHP Fatal error:  Cannot redeclare Prueba::saludar() in...\n*\/\n\n?&gt;<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Soluciones\"><\/span>Soluciones<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Emular la sobrecarga puede tomar muchos caminos y todos aceptables.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Valores_por_defecto\"><\/span>Valores por defecto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En este caso se colocan argumentos con valores por defecto.<\/p>\n<pre class=\"lang:php decode:true\" title=\"Sobrecarga con valores por defecto\">&lt;?php\n\nclass Prueba\n{\n    public static function saludar($argumento = null)\n    {\n        if ($argumento == null) echo 'Hola';\n        else echo 'Hola ', $argumento;\n    }\n}\n\nPrueba::saludar();\nPrueba::saludar('mundo');\n\n?&gt;<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Funciones_variadicas\"><\/span>Funciones var\u00edadicas<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Estas nos permiten utilizan argumentos m\u00faltiples en una sola implementaci\u00f3n.<\/p>\n<pre class=\"lang:php decode:true\" title=\"Sobrecarga con valores por defecto\">&lt;?php\n\nclass Prueba\n{\n    public static function saludar()\n    {\n        $argumentos = func_get_args();\n        $numeroArgs = count($argumentos);\n\n        if ($numeroArgs == 0) echo 'Hola';\n        else if ($numeroArgs == 1) echo 'Hola ', $argumentos[0];\n    }\n}\n\nPrueba::saludar();\nPrueba::saludar('mundo');\n\n?&gt;<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Metodo_call\"><\/span>M\u00e9todo __call()<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Es posible usar __call y realizar una serie de tratamientos para construir o desviar las llamadas a m\u00e9todos. Esto fue visto en la secci\u00f3n <a href=\"http:\/\/projectopy.com\/blog\/php-metodos-magicos-2#sobrecarga-call\">Sobrecarga con el m\u00e9todo __call<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Definici\u00f3n Una caracter\u00edstica \u00fatil en el Programaci\u00f3n Orientada a Objetos es la sobrecarga (overload) &#8211;Evitar confundir con sobrescritura (overriding), que consiste en una nueva implementaci\u00f3n en los m\u00e9todos de una clase hija con respecto a los de su clase padre. En este caso la sobrecarga dicta que un objeto puede contener varios m\u00e9todos nombrados de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[45,46],"tags":[],"class_list":["post-1043","post","type-post","status-publish","format-standard","hentry","category-objetos","category-php","entry"],"jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/posts\/1043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/comments?post=1043"}],"version-history":[{"count":0,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/posts\/1043\/revisions"}],"wp:attachment":[{"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/media?parent=1043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/categories?post=1043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iscodigo.com\/blog\/wp-json\/wp\/v2\/tags?post=1043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}