{"id":1096,"date":"2024-07-07T22:59:51","date_gmt":"2024-07-08T03:59:51","guid":{"rendered":"https:\/\/drmad.org\/blog\/?p=1096"},"modified":"2024-09-05T19:23:58","modified_gmt":"2024-09-06T00:23:58","slug":"obsoletizacion-de-declaracion-implicita-de-parametros-nuleables-en-php-8-4","status":"publish","type":"post","link":"https:\/\/drmad.org\/blog\/obsoletizacion-de-declaracion-implicita-de-parametros-nuleables-en-php-8-4.html","title":{"rendered":"Obsoletizaci\u00f3n de declaraci\u00f3n impl\u00edcita de par\u00e1metros &#8216;nuleables&#8217; en PHP 8.4"},"content":{"rendered":"\n<p>Ayer sali\u00f3 la primera <a href=\"https:\/\/www.php.net\/archive\/2024.php#2024-07-05-1\"><em>alpha<\/em> de PHP 8.4<\/a>. Todo emocionado, lo prob\u00e9 con el nuevo (y tambi\u00e9n en <em>alpha<\/em>) <a href=\"https:\/\/panelclientes.com\">Panel de Clientes de Paperclip<\/a>, y \u00a1Boom!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>Deprecated<\/strong>: Google\\Client::fetchAccessTokenWithAssertion(): Implicitly marking parameter $authHttp as nullable is deprecated, the explicit nullable type must be used instead in <strong>\/drmad\/projects\/clientes\/clientes\/vendor\/google\/apiclient\/src\/Client.php<\/strong> on line <strong>318<\/strong><\/code><\/pre>\n\n\n\n<p>Decenas del mismo error de obsoletizaci\u00f3n en <a href=\"https:\/\/github.com\/googleapis\/google-api-php-client\">google\/apiclient<\/a>, <a href=\"https:\/\/github.com\/vlucas\/phpdotenv\">vlucas\/phpdotenv<\/a>, y en (\u00a1oh no!) <a href=\"https:\/\/github.com\/vendimia\/core\">vendimia\/core<\/a> y <a href=\"https:\/\/github.com\/vendimia\/database\">vendimia\/database<\/a>. \ud83d\ude05<\/p>\n\n\n\n<p>Seg\u00fan el <a href=\"https:\/\/wiki.php.net\/rfc\/deprecate-implicitly-nullable-types\">RFC de este cambio<\/a>, esta es una correcci\u00f3n de un <em>hack<\/em> que existi\u00f3 desde la versi\u00f3n 5.1, donde se permit\u00eda especificar un par\u00e1metro con valor por defecto <code>null<\/code><em> en la mitad de la lista de par\u00e1metros<\/em>, como una forma de especificar que el par\u00e1metro pod\u00eda ser <code>null<\/code>, ya que no exist\u00eda una sintaxis para ello.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function foo(T1 $a, T2 $b = null, T3 $c) {}<\/pre>\n\n\n\n<p>En este ejemplo sacado del RFC, <code>$b<\/code> puede ser de tipo <code>T2<\/code> o <code>null<\/code>.<\/p>\n\n\n\n<p>Este RFC empieza a corregir ese <em>hack<\/em>, ya que ahora es posible especificar <code>T2 | null $b<\/code> o simplemente <code>?T2 $b<\/code>. Por ahora, mostrar\u00e1 ese mensaje si tienes <code>E_DEPRECATED<\/code> o <code>E_ALL<\/code> en la variable  <code>error_reporting<\/code> del php.ini (que <em>realmente deber\u00edas<\/em>, en especial en desarrollo). Esta inconsistencia ser\u00e1 removida por completo en la versi\u00f3n 9 de PHP.<\/p>\n\n\n\n<p>Ya repar\u00e9 todos los paquetes de Vendimia. Ahora esperar a que google y vlucas hagan lo suyo. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ayer sali\u00f3 la primera alpha de PHP 8.4. Todo emocionado, lo prob\u00e9 con el nuevo (y tambi\u00e9n en alpha) Panel de Clientes de Paperclip, y \u00a1Boom!<\/p>\n","protected":false},"author":1,"featured_media":1102,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[14,34],"tags":[],"class_list":["post-1096","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","category-php8"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/drmad.org\/blog\/wp-content\/uploads\/2024\/07\/deprecated-implicit-declaration-nullable.jpg?fit=3840%2C2160&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6p3z1-hG","jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/posts\/1096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/comments?post=1096"}],"version-history":[{"count":4,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/posts\/1096\/revisions"}],"predecessor-version":[{"id":1101,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/posts\/1096\/revisions\/1101"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/media\/1102"}],"wp:attachment":[{"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/media?parent=1096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/categories?post=1096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/drmad.org\/blog\/wp-json\/wp\/v2\/tags?post=1096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}