{"id":5029,"date":"2026-07-30T00:00:03","date_gmt":"2026-07-30T00:00:03","guid":{"rendered":"https:\/\/emfasi.com\/blog\/ia-aplicada-al-desenvolupament-web-com-migrar-codi-llegat-sense-delegar-les-decisions\/"},"modified":"2026-08-05T10:54:38","modified_gmt":"2026-08-05T10:54:38","slug":"ia-desenvolupament-web-migrar-codi-heretat","status":"publish","type":"post","link":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/","title":{"rendered":"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s, l\u00edmits i errors habituals"},"content":{"rendered":"<p><em>Migrar una aplicaci\u00f3 de <strong>PHP 5.3 a PHP 8.4<\/strong> amb l&#8217;ajuda de la IA no consisteix a demanar-li que modernitzi el codi i esperar. Consisteix a fer-la servir per entendre el projecte, ordenar la feina i revisar millor el resultat, sense deixar anar el control del que acaba en producci\u00f3. Aquest \u00e9s el proc\u00e9s que vam seguir, on ens va ajudar de deb\u00f2 i on no.<\/em><\/p>\n<p>Quan es parla de IA en desenvolupament, la conversa comen\u00e7a gaireb\u00e9 sempre pel mateix: quant codi pot escriure i en quant de temps.<\/p>\n<p>\u00c9s normal, perqu\u00e8 \u00e9s la part que es veu.<\/p>\n<p>Descrius el que necessites, esperes uns segons i apareix una cosa que fa m\u00e9s o menys el que demanaves. La IA no protesta, no discuteix l&#8217;arquitectura i gaireb\u00e9 sempre entrega alguna cosa que arrenca.<\/p>\n<p>El problema \u00e9s justament aqu\u00ed, en aquest \u00abarrenca\u00bb.<\/p>\n<p>Un fragment de codi pot funcionar perfectament i duplicar una cosa que ja existia. Pot resoldre el cas que li has descrit i ignorar els tres que no has esmentat. Pot seguir un patr\u00f3 correcte en abstracte i saltar-se les normes del projecte. Pot millorar un fitxer per separat i empitjorar el conjunt.<\/p>\n<p>Cap d&#8217;aquests problemes es detecta comprovant si funciona.<\/p>\n<p>Per aix\u00f2, incorporar IA en un proc\u00e9s de desenvolupament no \u00e9s simplement demanar-li que escrigui millor codi.<\/p>\n<p>El seu valor real apareix abans i despr\u00e9s d&#8217;escriure&#8217;l: quan ajuda a entendre codi que ning\u00fa va documentar, a localitzar tot el que cal canviar, a anticipar efectes secundaris i a deixar per escrit per qu\u00e8 es va decidir cada cosa.<\/p>\n<p>A \u00c8mfasi tenim un costum sa, o lleugerament temerari: abans de convertir una idea en recomanaci\u00f3 per a un client, la provem en els nostres propis projectes. Ens interessa saber on falla el m\u00e8tode, no nom\u00e9s on llueix.<\/p>\n<p>Fa poc ens en va tocar un que servia perfectament per a aix\u00f2: <strong>migrar una aplicaci\u00f3 web de gesti\u00f3 d&#8217;activitats de PHP 5.3 a PHP 8.4<\/strong>.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 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\">Continguts<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Que_vol_dir_migrar_de_PHP_5_a_PHP_8\" >Qu\u00e8 vol dir migrar de PHP 5 a PHP 8<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Que_el_codi_funcioni_no_vol_dir_que_estigui_be\" >Que el codi funcioni no vol dir que estigui b\u00e9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Abans_de_demanar_codi_cal_entendre_el_que_ja_hi_ha\" >Abans de demanar codi, cal entendre el que ja hi ha<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Que_es_la_fase_0_duna_migracio\" >Qu\u00e8 \u00e9s la fase 0 d&#8217;una migraci\u00f3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Linventari_del_que_calia_canviar_no_el_vam_fer_a_ma\" >L&#8217;inventari del que calia canviar no el vam fer a m\u00e0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Donar_acces_al_codi_no_es_delegar_les_decisions\" >Donar acc\u00e9s al codi no \u00e9s delegar les decisions<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Migrar_no_es_reescriure_i_aquesta_es_la_linia_que_ho_ordena_tot\" >Migrar no \u00e9s reescriure, i aquesta \u00e9s la l\u00ednia que ho ordena tot<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Un_projecte_aixi_no_es_resol_amb_un_unic_gran_prompt\" >Un projecte aix\u00ed no es resol amb un \u00fanic gran prompt<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Una_IA_proposa_una_altra_ajuda_a_questionar-la\" >Una IA proposa, una altra ajuda a q\u00fcestionar-la<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Els_errors_que_no_donen_error_el_risc_real_dactualitzar_PHP\" >Els errors que no donen error: el risc real d&#8217;actualitzar PHP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Els_errors_mes_cars_son_els_que_semblen_bones_practiques\" >Els errors m\u00e9s cars s\u00f3n els que semblen bones pr\u00e0ctiques<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Documentar_la_migracio_no_es_guardar_converses\" >Documentar la migraci\u00f3 no \u00e9s guardar converses<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#Que_vol_dir_per_a_nosaltres_ser_una_agencia_AI_First\" >Qu\u00e8 vol dir per a nosaltres ser una ag\u00e8ncia AI First<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Que_vol_dir_migrar_de_PHP_5_a_PHP_8\"><\/span>Qu\u00e8 vol dir migrar de PHP 5 a PHP 8<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>PHP \u00e9s el llenguatge sobre el qual funcionen la majoria de webs i aplicacions de gesti\u00f3. Com qualsevol programa, t\u00e9 versions, i les antigues deixen de rebre actualitzacions de seguretat.<\/p>\n<p>Quan una aplicaci\u00f3 es va quedar escrita per a PHP 5, tard o d&#8217;hora arriba l&#8217;av\u00eds del hosting: aquesta versi\u00f3 ja no est\u00e0 suportada. A partir d&#8217;aqu\u00ed hi ha dues opcions, actualitzar o quedar-se amb una aplicaci\u00f3 cada cop m\u00e9s exposada i m\u00e9s dif\u00edcil de mantenir.<\/p>\n<p>El problema \u00e9s que actualitzar no \u00e9s canviar un desplegable al panell del servidor.<\/p>\n<p>Entre PHP 5.3 i PHP 8.4 hi ha catorze anys. Canvien funcions que s&#8217;han eliminat, comportaments que abans eren d&#8217;una manera i ara s\u00f3n d&#8217;una altra, el sistema d&#8217;avisos i errors, i fins i tot la manera com el llenguatge compara dos valors.<\/p>\n<p>En el nostre cas, a m\u00e9s, l&#8217;aplicaci\u00f3 funcionava, la feia servir gent cada dia i no podia deixar de funcionar durant el proc\u00e9s.<\/p>\n<p>Haur\u00edem pogut obrir el projecte i demanar a la IA que el modernitz\u00e9s sencer. Haur\u00edem obtingut codi nou de pressa, per\u00f2 haur\u00edem comen\u00e7at pel final.<\/p>\n<p>Abans de tocar una l\u00ednia calia resoldre coses m\u00e9s importants: fins on arribava el projecte, quines parts havien de quedar-se exactament igual, quins comportaments podien canviar sense que ning\u00fa ho not\u00e9s i com sabr\u00edem, si alguna cosa fallava, d&#8217;on venia la fallada.<\/p>\n<p>La IA va ser present durant tot el proc\u00e9s, per\u00f2 no per substituir aquestes decisions. La vam fer servir per entendre el punt de partida, ordenar la feina i revisar millor el resultat.<\/p>\n<div style=\"background: #f5f5f5; border-left: 4px solid #111; padding: 24px 28px; margin: 28px 0; border-radius: 0 8px 8px 0;\">\n<p style=\"margin: 0;\">Perqu\u00e8 el problema d&#8217;una migraci\u00f3 no \u00e9s el codi que deixa de funcionar. \u00c9s el que continua funcionant d&#8217;una altra manera.<\/p>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Que_el_codi_funcioni_no_vol_dir_que_estigui_be\"><\/span>Que el codi funcioni no vol dir que estigui b\u00e9<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Una IA generativa est\u00e0 feta per produir una resposta plausible. En desenvolupament, \u00abplausible\u00bb t\u00e9 un parany: el codi o funciona o no funciona, i quan funciona sembla que la discussi\u00f3 s&#8217;ha acabat.<\/p>\n<p>No s&#8217;ha acabat.<\/p>\n<p>En un projecte real, un canvi es jutja per coses que l&#8217;execuci\u00f3 no mostra. Si encaixa amb el que ja existeix. Si respecta les normes del projecte, encara que siguin antigues. Si alg\u00fa el podr\u00e0 entendre d&#8217;aqu\u00ed a un any. Si fa exactament el mateix que abans o ho canvia sense avisar.<\/p>\n<p><strong>La IA et pot dir si una cosa funciona. No et pot dir si encaixa.<\/strong><\/p>\n<p>Aix\u00f2 dep\u00e8n d&#8217;informaci\u00f3 que no \u00e9s a la pregunta que li fas: per qu\u00e8 el codi es va escriure aix\u00ed, qu\u00e8 es va provar i es va descartar, quines restriccions t\u00e9 el client, qu\u00e8 es construir\u00e0 despr\u00e9s.<\/p>\n<p>Quan falta aquest context, la IA omple els buits amb el m\u00e9s habitual. I el m\u00e9s habitual, codi modern amb framework i estructura de projecte actual, no sempre \u00e9s l&#8217;adequat per a l&#8217;aplicaci\u00f3 que tens al davant.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Abans_de_demanar_codi_cal_entendre_el_que_ja_hi_ha\"><\/span>Abans de demanar codi, cal entendre el que ja hi ha<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Que_es_la_fase_0_duna_migracio\"><\/span>Qu\u00e8 \u00e9s la fase 0 d&#8217;una migraci\u00f3<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En alguns projectes d&#8217;\u00c8mfasi anomenem fase 0 la feina de recopilar i comprovar informaci\u00f3 abans de comen\u00e7ar. En <a href=\"https:\/\/emfasi.com\/ca\/blog\/ia-aplicada-seo-sense-delegar-estrategia\/\"><strong>SEO<\/strong><\/a> vol dir una cosa; en desenvolupament, una de bastant semblant.<\/p>\n<p>Abans de tocar res reunim el context real: quins fitxers hi ha, de qu\u00e8 dep\u00e8n el projecte i amb quines versions, qu\u00e8 s&#8217;executa a cada pantalla, quines parts reben m\u00e9s tr\u00e0nsit, quins serveis externs hi ha connectats, qu\u00e8 es pot provar en local i qu\u00e8 nom\u00e9s existeix al servidor de producci\u00f3.<\/p>\n<p>En aquest projecte la fase 0 va donar un resultat inc\u00f2mode, que \u00e9s justament per al que serveix: no hi havia documentaci\u00f3, no hi havia proves autom\u00e0tiques i bona part de la l\u00f2gica estava barrejada amb el disseny de les pantalles. La persona que ho va escriure ja no estava disponible per preguntar-li res.<\/p>\n<p>Aquest, i no la sintaxi, era el problema real de la migraci\u00f3.<\/p>\n<p><strong>El context no \u00e9s una introducci\u00f3 quilom\u00e8trica abans d&#8217;una instrucci\u00f3. \u00c9s informaci\u00f3 seleccionada, ordenada i comprovada.<\/strong><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Linventari_del_que_calia_canviar_no_el_vam_fer_a_ma\"><\/span>L&#8217;inventari del que calia canviar no el vam fer a m\u00e0<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Aqu\u00ed \u00e9s on la IA va aportar valor des del primer dia, i no escrivint codi.<\/p>\n<p>Una migraci\u00f3 d&#8217;aquest salt comen\u00e7a per saber exactament qu\u00e8 cal tocar. Part d&#8217;aquesta feina la fan eines d&#8217;an\u00e0lisi de compatibilitat, que llisten les funcions eliminades i les crides obsoletes. Aix\u00f2 no ho fa ni ho ha de fer una IA.<\/p>\n<p>Per\u00f2 el llistat d&#8217;una eina et diu <em>on<\/em> \u00e9s el problema. No et diu <em>qu\u00e8 feia<\/em> aquell codi ni per qu\u00e8.<\/p>\n<p>Amb el projecte connectat a l&#8217;editor vam poder fer preguntes que en un codi sense documentar costen dies: qu\u00e8 fa aquest m\u00f2dul, on es fa servir aquesta funci\u00f3, qu\u00e8 passa si canvio aquest comportament, quines parts depenen d&#8217;aquesta taula. Llegir codi ali\u00e8 i explicar-lo \u00e9s una de les coses que la IA fa b\u00e9 de deb\u00f2.<\/p>\n<p>En un parell de sessions ten\u00edem un mapa de l&#8217;aplicaci\u00f3 que a m\u00e0 hauria costat setmanes.<\/p>\n<p>Aquell mapa no era una decisi\u00f3. Era el material amb qu\u00e8 decidir.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Donar_acces_al_codi_no_es_delegar_les_decisions\"><\/span>Donar acc\u00e9s al codi no \u00e9s delegar les decisions<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Treballar amb el repositori accessible canvia molt la qualitat del que obtens. La IA deixa d&#8217;imaginar com \u00e9s el projecte i el pot llegir.<\/p>\n<p>Per\u00f2 aix\u00f2 no converteix les seves propostes en recomanacions autom\u00e0tiques.<\/p>\n<p>Una IA amb acc\u00e9s al codi pot detectar que hi ha tres maneres diferents de consultar la base de dades. No pot decidir quina de les tres ha de sobreviure, ni si val la pena unificar-les ara o d&#8217;aqu\u00ed a un any. Aquesta decisi\u00f3 dep\u00e8n del pressupost del client, del risc de tocar una part que funciona i de cap on va el projecte.<\/p>\n<p><strong>Una llista d&#8217;incompatibilitats no \u00e9s un pla de migraci\u00f3. Un connector no substitueix un criteri, permet contrastar-lo millor.<\/strong><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Migrar_no_es_reescriure_i_aquesta_es_la_linia_que_ho_ordena_tot\"><\/span>Migrar no \u00e9s reescriure, i aquesta \u00e9s la l\u00ednia que ho ordena tot<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Aquesta va ser la decisi\u00f3 que va ordenar el projecte sencer, i la vam prendre abans de canviar una l\u00ednia.<\/p>\n<p>L&#8217;objectiu era que l&#8217;aplicaci\u00f3 funcion\u00e9s exactament igual en PHP 8.4. Mateix comportament, mateixes pantalles, mateixos resultats. No era el moment de millorar l&#8217;arquitectura, posar un framework ni reorganitzar carpetes.<\/p>\n<p>Pot semblar obvi. A la pr\u00e0ctica \u00e9s la l\u00ednia m\u00e9s dif\u00edcil de mantenir, i la IA empeny constantment en la direcci\u00f3 contr\u00e0ria.<\/p>\n<p>Si li demanes que actualitzi un fitxer de PHP 5.3, no es limita a arreglar el que est\u00e0 trencat. Et proposa reorganitzar funcions, separar la l\u00f2gica del disseny, canviar com es carreguen els fitxers i muntar una capa nova per parlar amb la base de dades. Cada proposta, per separat, \u00e9s una bona pr\u00e0ctica. Totes juntes, enmig d&#8217;una migraci\u00f3 i sense proves autom\u00e0tiques que les sostinguin, s\u00f3n una reescriptura encoberta.<\/p>\n<p><strong>Quan canvies el motor i el codi alhora, qualsevol fallada pot venir de dos llocs. I no sabr\u00e0s de quin.<\/strong><\/p>\n<p>Aix\u00ed que vam fixar una regla abans de comen\u00e7ar: en aquesta fase nom\u00e9s es toca el que impedeix funcionar en 8.4. Tota la resta, encara que fos lletja, es quedava com estava. El que mereixia millorar-se s&#8217;apuntava en una llista a part per a una segona fase, ja amb l&#8217;aplicaci\u00f3 estable.<\/p>\n<p>Aquesta regla la vam haver de recordar unes quantes vegades. Tamb\u00e9 a nosaltres.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Un_projecte_aixi_no_es_resol_amb_un_unic_gran_prompt\"><\/span>Un projecte aix\u00ed no es resol amb un \u00fanic gran prompt<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Haur\u00edem pogut demanar en una sola instrucci\u00f3 que analitz\u00e9s el projecte, correg\u00eds totes les incompatibilitats i deix\u00e9s l&#8217;aplicaci\u00f3 llesta per a 8.4.<\/p>\n<p>Hauria estat r\u00e0pid. Tamb\u00e9 hauria estat dif\u00edcil saber per qu\u00e8 va prendre cada direcci\u00f3, quins sup\u00f2sits arrossegava i en quin moment es va equivocar.<\/p>\n<p>Vam preferir dividir el problema en decisions m\u00e9s petites.<\/p>\n<p>Primer, l&#8217;inventari d&#8217;incompatibilitats. Despr\u00e9s, agrupar-les per tipus de problema en comptes de per fitxer:<\/p>\n<ul>\n<li>totes les connexions a la base de dades, escrites amb un sistema retirat fa anys;<\/li>\n<li>totes les cerques de text fetes amb una sintaxi que PHP 8 ja no reconeix;<\/li>\n<li>tot el codi que creava objectes a la manera de PHP 4;<\/li>\n<li>totes les comparacions de valors en els punts on el canvi de criteri de PHP 8 podia alterar el resultat.<\/li>\n<\/ul>\n<p>Cada grup es resolia amb el mateix criteri a tot el projecte, es revisava i es tancava abans de passar al seg\u00fcent.<\/p>\n<p>Treballar per tipus de problema t\u00e9 un avantatge clar: revises una decisi\u00f3 una vegada i l&#8217;apliques a cinquanta llocs, en comptes de revisar cinquanta decisions diferents.<\/p>\n<p>No \u00e9s una llista universal, els grups depenen de cada projecte. El que s\u00ed que es trasllada \u00e9s el principi: mantenir el problema a una mida que es pugui revisar d&#8217;una asseguda.<\/p>\n<p>Cada fase produ\u00efa una conclusi\u00f3 revisable que alimentava la seg\u00fcent. Si una decisi\u00f3 no se sostenia, es corregia all\u00e0, no quan ja hi havia vint fitxers constru\u00efts a sobre.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Una_IA_proposa_una_altra_ajuda_a_questionar-la\"><\/span>Una IA proposa, una altra ajuda a q\u00fcestionar-la<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>En diversos moments vam contrastar el resultat entre models diferents. No per organitzar un combat ni declarar un guanyador, sin\u00f3 per donar-los papers diferents.<\/p>\n<p>Un proposava els canvis d&#8217;un grup. El segon els rebia sense l&#8217;historial de la conversa i actuava com a revisor cr\u00edtic: quin comportament ha canviat aqu\u00ed, quin cas no s&#8217;ha contemplat, quina part \u00e9s m\u00e9s complicada del que el problema demanava, quina depend\u00e8ncia nova no calia.<\/p>\n<p>Despr\u00e9s torn\u00e0vem aquesta cr\u00edtica al primer per replantejar.<\/p>\n<p><strong>Una IA ens pot ajudar a construir una proposta. Una altra ens pot ajudar a desconfiar-ne.<\/strong><\/p>\n<p>Aquest desacord \u00e9s \u00fatil perqu\u00e8 trenca la in\u00e8rcia. Quan portes vint missatges treballant sobre una mateixa soluci\u00f3, tant l&#8217;equip com el model comencen a donar per bones les decisions anteriors nom\u00e9s perqu\u00e8 ja hi s\u00f3n. Posar-hi una altra revisi\u00f3 obliga a tornar-les a justificar.<\/p>\n<p>Per\u00f2 conv\u00e9 no romantitzar el m\u00e8tode.<\/p>\n<p>Dos models poden coincidir i estar equivocats. Poden discrepar per raons poc rellevants o proposar canvis que milloren un fitxer i empitjoren el conjunt. La revisi\u00f3 creuada amplia l&#8217;an\u00e0lisi, no dicta un veredicte.<\/p>\n<p>La decisi\u00f3 final continuava sent nostra.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Els_errors_que_no_donen_error_el_risc_real_dactualitzar_PHP\"><\/span>Els errors que no donen error: el risc real d&#8217;actualitzar PHP<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>La part visible d&#8217;una migraci\u00f3 aix\u00ed \u00e9s la que trenca. El codi que ja no existeix en PHP 8 es detecta sol: l&#8217;aplicaci\u00f3 deixa d&#8217;arrencar i saps exactament on mirar.<\/p>\n<p>Aquesta part, amb eines i una IA que ent\u00e9n el projecte, avan\u00e7a raonablement de pressa.<\/p>\n<p>El que costa de deb\u00f2 \u00e9s l&#8217;altre: el codi que continua funcionant i ara es comporta d&#8217;una altra manera.<\/p>\n<p>PHP 8 va canviar <a href=\"https:\/\/www.php.net\/manual\/es\/migration80.incompatible.php\" rel=\"nofollow\"><strong>la manera com compara un text amb un n\u00famero<\/strong><\/a>. Durant anys, comparar un text amb un zero donava cert. Ara d\u00f3na fals. \u00c9s un canvi correcte i feia temps que es demanava, per\u00f2 en una aplicaci\u00f3 amb catorze anys a sobre vol dir que hi ha filtres, condicions i validacions que fan una cosa diferent de la que feien ahir.<\/p>\n<p>No llancen cap error. Simplement retornen una altra cosa.<\/p>\n<p>Tradu\u00eft al que veu el client: un llistat que mostra registres de m\u00e9s, un filtre que deixa fora resultats que haurien d&#8217;apar\u00e8ixer, un formulari que accepta una cosa que abans rebutjava. Res no cau. Tot sembla normal fins que alg\u00fa mira els n\u00fameros i no quadren.<\/p>\n<p>I aqu\u00ed la IA \u00e9s una ajuda relativa. Et pot assenyalar tots els llocs on hi ha una comparaci\u00f3 d&#8217;aquest tipus, i s\u00f3n molts. El que no et pot dir \u00e9s quin d&#8217;ells importa, perqu\u00e8 aix\u00f2 dep\u00e8n de quines dades arriben realment a cada punt de l&#8217;aplicaci\u00f3. La IA no sap que aquell camp sempre ve d&#8217;un desplegable amb valors controlats, ni que aquell altre s&#8217;omple des d&#8217;un formulari p\u00fablic on hi entra qualsevol cosa.<\/p>\n<p>Aix\u00f2 ho sap qui coneix l&#8217;aplicaci\u00f3, o ho esbrina mirant les dades.<\/p>\n<p><strong>El temps que estalvies generant l&#8217;inverteixes revisant. El guany \u00e9s que revisar surt m\u00e9s barat que escriure des de zero, no que la revisi\u00f3 desaparegui.<\/strong><\/p>\n<p>Una cosa semblant va passar amb els avisos que en PHP 8 van passar a ser errors. Codi que durant anys havia conviscut amb avisos silenciats va comen\u00e7ar a comportar-se d&#8217;una altra manera. Cap eina et diu si aquell av\u00eds era irrellevant o si tapava un problema des del principi.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Els_errors_mes_cars_son_els_que_semblen_bones_practiques\"><\/span>Els errors m\u00e9s cars s\u00f3n els que semblen bones pr\u00e0ctiques<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>La IA t\u00e9 una inclinaci\u00f3 natural a proposar, ampliar i completar. Si li demanes alternatives, poques vegades respon: \u00abDe fet, aqu\u00ed no cal tocar res\u00bb.<\/p>\n<p>El criteri professional treballa moltes vegades en la direcci\u00f3 contr\u00e0ria.<\/p>\n<p>En aquesta migraci\u00f3 vam decidir no posar-hi un framework, tot i que cada revisi\u00f3 ho suggeria d&#8217;alguna manera. No era a l&#8217;objectiu i multiplicava el risc. No vam reorganitzar l&#8217;estructura de fitxers: \u00e9s antiga i no l&#8217;haur\u00edem fet aix\u00ed, per\u00f2 moure-la ens hauria deixat sense poder comparar l&#8217;abans i el despr\u00e9s. No vam afegir comprovacions estrictes de tipus de manera general, perqu\u00e8 en un codi sense proves autom\u00e0tiques aquesta \u00e9s una manera molt efica\u00e7 de descobrir en producci\u00f3 quins valors arribaven de deb\u00f2 a cada funci\u00f3. I no vam reescriure els m\u00f2duls m\u00e9s antics, precisament els que m\u00e9s ganes fan de reescriure: funcionaven, gaireb\u00e9 ning\u00fa els tocava i no era el seu torn.<\/p>\n<p>Durant el proc\u00e9s vam rebutjar propostes ben argumentades que milloraven un fitxer concret i empitjoraven el que de deb\u00f2 importava: poder saber, si alguna cosa fallava, si la fallada venia de la versi\u00f3 de PHP o dels nostres canvis.<\/p>\n<p>Una proposta no es tornava adequada per estar ben escrita.<\/p>\n<p><strong>Limitar, ajornar i deixar coses com estan tamb\u00e9 s\u00f3n decisions t\u00e8cniques.<\/strong><\/p>\n<p>Poder generar vint enfocaments en segons no elimina la necessitat de triar-ne un. Nom\u00e9s fa m\u00e9s visible la responsabilitat de fer-ho.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Documentar_la_migracio_no_es_guardar_converses\"><\/span>Documentar la migraci\u00f3 no \u00e9s guardar converses<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tot el proc\u00e9s es va recollir en un document de migraci\u00f3.<\/p>\n<p>Inclo\u00efa qu\u00e8 es va canviar a cada grup i amb quin criteri, quins comportaments podien haver canviat i on vigilar-los, qu\u00e8 vam decidir no tocar i per qu\u00e8, i la llista de millores ajornades a una segona fase.<\/p>\n<p>Aix\u00f2 \u00e9s molt diferent de conservar un historial de xat.<\/p>\n<p>Una conversa pot contenir idees valuoses, per\u00f2 tamb\u00e9 preguntes provisionals, camins abandonats, respostes contradict\u00f2ries i molt material que nom\u00e9s tenia sentit en el moment en qu\u00e8 es va produir.<\/p>\n<p>Buscar mesos despr\u00e9s la decisi\u00f3 important entre desenes de missatges \u00e9s una forma poc sofisticada d&#8217;arqueologia digital.<\/p>\n<p><strong>La documentaci\u00f3 converteix l&#8217;intercanvi en mem\u00f2ria de projecte.<\/strong><\/p>\n<p>En una migraci\u00f3 aix\u00f2 t\u00e9 un valor evident. Quan alguna cosa falli d&#8217;aqu\u00ed a tres mesos, la primera pregunta ser\u00e0 si t\u00e9 a veure amb el canvi de versi\u00f3. Amb aquell document al davant, es respon en deu minuts en comptes de en dos dies.<\/p>\n<p>El codi diu el que fa. Gaireb\u00e9 mai diu per qu\u00e8 es va fer aix\u00ed en comptes de l&#8217;altra manera, que era la que semblava \u00f2bvia.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Que_vol_dir_per_a_nosaltres_ser_una_agencia_AI_First\"><\/span>Qu\u00e8 vol dir per a nosaltres ser una ag\u00e8ncia AI First<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>No consisteix a generar m\u00e9s de pressa, fer servir totes les eines disponibles o automatitzar qualsevol tasca que admeti una instrucci\u00f3.<\/p>\n<p>Tampoc a acceptar la primera resposta perqu\u00e8 arriba en deu segons i arrenca.<\/p>\n<p>En aquesta migraci\u00f3 la IA ens va estalviar la part m\u00e9s lenta i menys interessant: entendre un codi sense documentar, localitzar tot el que calia canviar i aplicar el mateix criteri a desenes de llocs sense saltar-nos-en cap. Aix\u00f2 \u00e9s molt.<\/p>\n<p>El que no va fer va ser decidir fins on arribava el projecte, qu\u00e8 es quedava com estava i quins riscos pod\u00edem assumir amb una aplicaci\u00f3 en \u00fas. Aquestes decisions eren les que determinaven si la migraci\u00f3 sortia b\u00e9.<\/p>\n<p>El criteri professional continua definint l&#8217;abast, interpretant les restriccions, establint prioritats i responent del que es desplega.<\/p>\n<p>Perqu\u00e8 quan alguna cosa es trenca en producci\u00f3 a les onze de la nit, no hi ha cap model a qui reclamar res.<\/p>\n<p><strong>No fem servir la IA per deixar de pensar. La fem servir per pensar amb m\u00e9s informaci\u00f3, m\u00e9s ordre i m\u00e9s capacitat cr\u00edtica.<\/strong><\/p>\n<p>Aquesta manera de treballar no es limita al desenvolupament. Tamb\u00e9 l&#8217;apliquem en processos com la <a href=\"https:\/\/emfasi.com\/ca\/blog\/ia-aplicada-seo-sense-delegar-estrategia\/\"><strong>IA aplicada al SEO<\/strong><\/a> o el disseny <a href=\"https:\/\/emfasi.com\/ca\/blog\/ia-disseny-ux-ui\/\"><strong>UX\/UI assistit per intel\u00b7lig\u00e8ncia artificial<\/strong><\/a>, on generar opcions tampoc no substitueix la necessitat de decidir amb criteri.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Migrar una aplicaci\u00f3 de PHP 5.3 a PHP 8.4 amb l&#8217;ajuda de la IA no consisteix a demanar-li que modernitzi el codi i esperar. Consisteix a fer-la servir per entendre el projecte, ordenar la feina i revisar millor el resultat, sense deixar anar el control del que acaba en producci\u00f3. Aquest \u00e9s el proc\u00e9s que vam seguir, on ens va ajudar de deb\u00f2 i on no.<\/p>\n","protected":false},"author":6,"featured_media":5012,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[57,58],"tags":[],"class_list":["post-5029","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rescat-dun-projecte-web","category-desenvolupament-web"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s i errors habituals | \u00c8mfasi<\/title>\n<meta name=\"description\" content=\"Com vam migrar una aplicaci\u00f3 real de PHP 5.3 a PHP 8.4 amb IA: qu\u00e8 vam automatitzar, qu\u00e8 vam decidir nosaltres i els errors silenciosos que ning\u00fa detecta.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/\" \/>\n<meta property=\"og:locale\" content=\"ca_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s i errors habituals | \u00c8mfasi\" \/>\n<meta property=\"og:description\" content=\"Com vam migrar una aplicaci\u00f3 real de PHP 5.3 a PHP 8.4 amb IA: qu\u00e8 vam automatitzar, qu\u00e8 vam decidir nosaltres i els errors silenciosos que ning\u00fa detecta.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/\" \/>\n<meta property=\"og:site_name\" content=\"\u00c8mfasi\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T00:00:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-05T10:54:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/emfasi.com\/wp-content\/uploads\/2026\/07\/emfasi-ia-dev.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1054\" \/>\n\t<meta property=\"og:image:height\" content=\"1492\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Manel Zambrana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrit per\" \/>\n\t<meta name=\"twitter:data1\" content=\"Manel Zambrana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Temps estimat de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minuts\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/\"},\"author\":{\"name\":\"Manel Zambrana\",\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/#\\\/schema\\\/person\\\/ad0074bc23cdffda7d9fb64509117267\"},\"headline\":\"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s, l\u00edmits i errors habituals\",\"datePublished\":\"2026-07-30T00:00:03+00:00\",\"dateModified\":\"2026-08-05T10:54:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/\"},\"wordCount\":3172,\"publisher\":{\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/emfasi.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/emfasi-ia-dev.webp\",\"articleSection\":[\"Rescat d'un projecte web\",\"Desenvolupament web\"],\"inLanguage\":\"ca\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/\",\"url\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/\",\"name\":\"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s i errors habituals | \u00c8mfasi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/emfasi.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/emfasi-ia-dev.webp\",\"datePublished\":\"2026-07-30T00:00:03+00:00\",\"dateModified\":\"2026-08-05T10:54:38+00:00\",\"description\":\"Com vam migrar una aplicaci\u00f3 real de PHP 5.3 a PHP 8.4 amb IA: qu\u00e8 vam automatitzar, qu\u00e8 vam decidir nosaltres i els errors silenciosos que ning\u00fa detecta.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/#breadcrumb\"},\"inLanguage\":\"ca\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ca\",\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/#primaryimage\",\"url\":\"https:\\\/\\\/emfasi.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/emfasi-ia-dev.webp\",\"contentUrl\":\"https:\\\/\\\/emfasi.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/emfasi-ia-dev.webp\",\"width\":1054,\"height\":1492},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/ia-desenvolupament-web-migrar-codi-heretat\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/pagina-principal-2\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s, l\u00edmits i errors habituals\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/#website\",\"url\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/\",\"name\":\"\u00c8mfasi\",\"description\":\"your digital partner\",\"publisher\":{\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ca\"},{\"@type\":\"LocalBusiness\",\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/#organization\",\"name\":\"\u00c8mfasi - Agencia de Marketing Digital\",\"alternateName\":\"\u00c8mfasi - disseny web\",\"url\":\"https:\\\/\\\/emfasi.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ca\",\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/emfasi.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/emfasi-profile-xxss.png\",\"contentUrl\":\"https:\\\/\\\/emfasi.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/emfasi-profile-xxss.png\",\"width\":1080,\"height\":1080,\"caption\":\"\u00c8mfasi - agencia de marketing digital\"},\"image\":\"https:\\\/\\\/emfasi.com\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/emfasi-profile-xxss.png\",\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/emfasi_com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/emfasi-marketing-digital\\\/\"],\"telephone\":\"+34937278606\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Rambla, 62, 1r 2a\",\"addressLocality\":\"Sabadell\",\"addressRegion\":\"Barcelona\",\"postalCode\":\"08201\",\"addressCountry\":\"ES\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":41.5432,\"longitude\":2.1093},\"areaServed\":[{\"@type\":\"City\",\"name\":\"Sabadell\"},{\"@type\":\"City\",\"name\":\"Barcelona\"},{\"@type\":\"AdministrativeArea\",\"name\":\"Catalu\u00f1a\"}],\"priceRange\":\"\u20ac\u20ac\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/#\\\/schema\\\/person\\\/ad0074bc23cdffda7d9fb64509117267\",\"name\":\"Manel Zambrana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ca\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/576698c39e17c7731f290d1ce0eaecf7bc3d33e3c16fbe54b1ada71268439153?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/576698c39e17c7731f290d1ce0eaecf7bc3d33e3c16fbe54b1ada71268439153?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/576698c39e17c7731f290d1ce0eaecf7bc3d33e3c16fbe54b1ada71268439153?s=96&d=mm&r=g\",\"caption\":\"Manel Zambrana\"},\"description\":\"Full Stack Developer en \u00c8mfasi\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/manel-zambrana-allue-846a2554\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/manel-zambrana-allue-846a2554\\\/\"],\"url\":\"https:\\\/\\\/emfasi.com\\\/ca\\\/blog\\\/author\\\/manel-zambrana\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s i errors habituals | \u00c8mfasi","description":"Com vam migrar una aplicaci\u00f3 real de PHP 5.3 a PHP 8.4 amb IA: qu\u00e8 vam automatitzar, qu\u00e8 vam decidir nosaltres i els errors silenciosos que ning\u00fa detecta.","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:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/","og_locale":"ca_ES","og_type":"article","og_title":"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s i errors habituals | \u00c8mfasi","og_description":"Com vam migrar una aplicaci\u00f3 real de PHP 5.3 a PHP 8.4 amb IA: qu\u00e8 vam automatitzar, qu\u00e8 vam decidir nosaltres i els errors silenciosos que ning\u00fa detecta.","og_url":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/","og_site_name":"\u00c8mfasi","article_published_time":"2026-07-30T00:00:03+00:00","article_modified_time":"2026-08-05T10:54:38+00:00","og_image":[{"width":1054,"height":1492,"url":"https:\/\/emfasi.com\/wp-content\/uploads\/2026\/07\/emfasi-ia-dev.webp","type":"image\/webp"}],"author":"Manel Zambrana","twitter_card":"summary_large_image","twitter_misc":{"Escrit per":"Manel Zambrana","Temps estimat de lectura":"14 minuts"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#article","isPartOf":{"@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/"},"author":{"name":"Manel Zambrana","@id":"https:\/\/emfasi.com\/ca\/#\/schema\/person\/ad0074bc23cdffda7d9fb64509117267"},"headline":"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s, l\u00edmits i errors habituals","datePublished":"2026-07-30T00:00:03+00:00","dateModified":"2026-08-05T10:54:38+00:00","mainEntityOfPage":{"@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/"},"wordCount":3172,"publisher":{"@id":"https:\/\/emfasi.com\/ca\/#organization"},"image":{"@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#primaryimage"},"thumbnailUrl":"https:\/\/emfasi.com\/wp-content\/uploads\/2026\/07\/emfasi-ia-dev.webp","articleSection":["Rescat d'un projecte web","Desenvolupament web"],"inLanguage":"ca"},{"@type":"WebPage","@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/","url":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/","name":"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s i errors habituals | \u00c8mfasi","isPartOf":{"@id":"https:\/\/emfasi.com\/ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#primaryimage"},"image":{"@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#primaryimage"},"thumbnailUrl":"https:\/\/emfasi.com\/wp-content\/uploads\/2026\/07\/emfasi-ia-dev.webp","datePublished":"2026-07-30T00:00:03+00:00","dateModified":"2026-08-05T10:54:38+00:00","description":"Com vam migrar una aplicaci\u00f3 real de PHP 5.3 a PHP 8.4 amb IA: qu\u00e8 vam automatitzar, qu\u00e8 vam decidir nosaltres i els errors silenciosos que ning\u00fa detecta.","breadcrumb":{"@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#breadcrumb"},"inLanguage":"ca","potentialAction":[{"@type":"ReadAction","target":["https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/"]}]},{"@type":"ImageObject","inLanguage":"ca","@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#primaryimage","url":"https:\/\/emfasi.com\/wp-content\/uploads\/2026\/07\/emfasi-ia-dev.webp","contentUrl":"https:\/\/emfasi.com\/wp-content\/uploads\/2026\/07\/emfasi-ia-dev.webp","width":1054,"height":1492},{"@type":"BreadcrumbList","@id":"https:\/\/emfasi.com\/ca\/blog\/ia-desenvolupament-web-migrar-codi-heretat\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/emfasi.com\/ca\/pagina-principal-2\/"},{"@type":"ListItem","position":2,"name":"Migrar de PHP 5 a PHP 8 amb IA: proc\u00e9s, l\u00edmits i errors habituals"}]},{"@type":"WebSite","@id":"https:\/\/emfasi.com\/ca\/#website","url":"https:\/\/emfasi.com\/ca\/","name":"\u00c8mfasi","description":"your digital partner","publisher":{"@id":"https:\/\/emfasi.com\/ca\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/emfasi.com\/ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ca"},{"@type":"LocalBusiness","@id":"https:\/\/emfasi.com\/ca\/#organization","name":"\u00c8mfasi - Agencia de Marketing Digital","alternateName":"\u00c8mfasi - disseny web","url":"https:\/\/emfasi.com\/","logo":{"@type":"ImageObject","inLanguage":"ca","@id":"https:\/\/emfasi.com\/ca\/#\/schema\/logo\/image\/","url":"https:\/\/emfasi.com\/wp-content\/uploads\/2024\/01\/emfasi-profile-xxss.png","contentUrl":"https:\/\/emfasi.com\/wp-content\/uploads\/2024\/01\/emfasi-profile-xxss.png","width":1080,"height":1080,"caption":"\u00c8mfasi - agencia de marketing digital"},"image":"https:\/\/emfasi.com\/wp-content\/uploads\/2024\/01\/emfasi-profile-xxss.png","sameAs":["https:\/\/www.instagram.com\/emfasi_com\/","https:\/\/www.linkedin.com\/company\/emfasi-marketing-digital\/"],"telephone":"+34937278606","address":{"@type":"PostalAddress","streetAddress":"Rambla, 62, 1r 2a","addressLocality":"Sabadell","addressRegion":"Barcelona","postalCode":"08201","addressCountry":"ES"},"geo":{"@type":"GeoCoordinates","latitude":41.5432,"longitude":2.1093},"areaServed":[{"@type":"City","name":"Sabadell"},{"@type":"City","name":"Barcelona"},{"@type":"AdministrativeArea","name":"Catalu\u00f1a"}],"priceRange":"\u20ac\u20ac"},{"@type":"Person","@id":"https:\/\/emfasi.com\/ca\/#\/schema\/person\/ad0074bc23cdffda7d9fb64509117267","name":"Manel Zambrana","image":{"@type":"ImageObject","inLanguage":"ca","@id":"https:\/\/secure.gravatar.com\/avatar\/576698c39e17c7731f290d1ce0eaecf7bc3d33e3c16fbe54b1ada71268439153?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/576698c39e17c7731f290d1ce0eaecf7bc3d33e3c16fbe54b1ada71268439153?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/576698c39e17c7731f290d1ce0eaecf7bc3d33e3c16fbe54b1ada71268439153?s=96&d=mm&r=g","caption":"Manel Zambrana"},"description":"Full Stack Developer en \u00c8mfasi","sameAs":["https:\/\/www.linkedin.com\/in\/manel-zambrana-allue-846a2554\/","https:\/\/www.linkedin.com\/in\/manel-zambrana-allue-846a2554\/"],"url":"https:\/\/emfasi.com\/ca\/blog\/author\/manel-zambrana\/"}]}},"_links":{"self":[{"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/posts\/5029","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/comments?post=5029"}],"version-history":[{"count":5,"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/posts\/5029\/revisions"}],"predecessor-version":[{"id":5127,"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/posts\/5029\/revisions\/5127"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/media\/5012"}],"wp:attachment":[{"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/media?parent=5029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/categories?post=5029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/emfasi.com\/ca\/wp-json\/wp\/v2\/tags?post=5029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}