{"id":5359,"date":"2026-01-19T17:27:32","date_gmt":"2026-01-19T16:27:32","guid":{"rendered":"https:\/\/sutilweb.eu\/?page_id=5359"},"modified":"2026-01-19T17:27:32","modified_gmt":"2026-01-19T16:27:32","slug":"50-como-pasar-parametros-a-una-ruta-php","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/php\/php-practico\/50-como-pasar-parametros-a-una-ruta-php\/","title":{"rendered":"50. Como pasar par\u00e1metros a una ruta PHP"},"content":{"rendered":"\n<p>Va a haber ocasiones en las que vamos a tener que pasar informaci\u00f3n a nuestra aplicaci\u00f3n pero desde la URL. En este cap\u00edtulo vamos a aprender a pasar una URL descriptiva de la informaci\u00f3n que se va a mostrar en pantalla. Para ello vamos a trabajar en el archivo <em>web.php<\/em> dentro de la carpeta <em>routes<\/em>.<\/p>\n\n\n\n<p>Incluimos la sintaxis sobre los dos archivos que hemos trabajado en este curso, el archivo <strong><em>Routes.php<\/em><\/strong> y el archivo <em>web.php<\/em>.<\/p>\n\n\n\n<p><em>lib\/Route.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace Lib;\n\nclass Route \n{\n  private static $routes = &#91;];\n\n  \/\/ M\u00e9todo encargado de agregar rutas GET\n  public static function get($uri, $callback){\n    $uri = trim($uri, \"\/\");\n    self::$routes&#91;'GET']&#91;$uri] = $callback;\n  }\n\n  \/\/ M\u00e9todo encargado de agregar rutas POST\n  public static function post($uri, $callback){\n    $uri = trim($uri, \"\/\");\n    self::$routes&#91;'POST']&#91;$uri] = $callback;\n  }\n  \n  \/\/ M\u00e9todo para recuperar la URI y el m\u00e9todo\n  public static function dispatch() {\n    $uri = $_SERVER&#91;'REQUEST_URI'];\n    $uri = trim($uri, \"\/\");\n\n    \/\/ Variable que nos mostrar\u00e1 el m\u00e9todo que hemos utilizado\n    $method = $_SERVER&#91;'REQUEST_METHOD'];\n\n    foreach(self::$routes&#91;$method] as $route => $callback){\n\n      if(strpos($route, ':') !== false){\n        $route = preg_replace('#:&#91;a-zA-Z]+#', '(&#91;a-zA-Z]+)', $route,);\n      }\n\n      if(preg_match(\"#^$route$#\", $uri , $matches)){\n        $params = array_slice($matches, 1);\n        \n        $response = $callback(...$params);\n\n        if(is_array($response) || is_object($response)){\n          header('Content-Type: application\/json');\n          \n          echo json_encode($response);\n        } else {\n          echo $response;\n        }\n\n        return;\n      }\n    }\n    echo \"404 Not Found\";\n  }\n}<\/code><\/pre>\n\n\n\n<p><em>routes\/web.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nuse Lib\\Route;\n\nRoute::get('\/', function(){\n  return &#91;\n    'title' => 'Home',\n    'content' => 'Hola desde la p\u00e1gina de Inicio'\n  ];\n});\n\nRoute::get('\/contact', function(){\n  return 'Hola desde la p\u00e1gina de contacto';\n});\n\nRoute::get('\/about', function(){\n  return 'Hola desde la p\u00e1gina de acerca de';\n});\n\nRoute::get('\/courses\/:slug', function($slug){\n  return \"El curso es: \" . $slug;\n});\n\nRoute::dispatch();<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Va a haber ocasiones en las que vamos a tener que pasar informaci\u00f3n a nuestra aplicaci\u00f3n pero desde la URL. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4518,"menu_order":49,"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-5359","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":"Va a haber ocasiones en las que vamos a tener que pasar informaci\u00f3n a nuestra aplicaci\u00f3n pero desde la URL. [&hellip;]","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5359","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=5359"}],"version-history":[{"count":4,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5359\/revisions"}],"predecessor-version":[{"id":5363,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5359\/revisions\/5363"}],"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=5359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}