DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   PHP 5.3 i PHP6 deprecetated features (http://www.devprotalk.com/showthread.php?t=7975)

bluesman 17. 10. 2009. 03:37

PHP 5.3 i PHP6 deprecetated features
 
Danas sam instalira php 5.3 i primetio sam da ima dosta izmena. Ovo je lista svih funkcija i metoda koje su deprecated u 5.3 a većina toga će biti izbačena iz php 6 totalno.

(Za one koje mrzi da kliknu) nestaće:

Citat:

The following is a list of deprecated INI directives. Use of any of these INI directives will cause an E_DEPRECATED error to be thrown at startup.

* define_syslog_variables
* register_globals
* register_long_arrays
* safe_mode
* magic_quotes_gpc
* magic_quotes_runtime
* magic_quotes_sybase
* Comments starting with '#' are now deprecated in .INI files.

Deprecated functions:

* call_user_method() (use call_user_func() instead)
* call_user_method_array() (use call_user_func_array() instead)
* define_syslog_variables()
* dl()
* ereg() (use preg_match() instead)
* ereg_replace() (use preg_replace() instead)
* eregi() (use preg_match() with the 'i' modifier instead)
* eregi_replace() (use preg_replace() with the 'i' modifier instead)
* set_magic_quotes_runtime() and its alias, magic_quotes_runtime()
* session_register() (use the $_SESSION superglobal instead)
* session_unregister() (use the $_SESSION superglobal instead)
* session_is_registered() (use the $_SESSION superglobal instead)
* set_socket_blocking() (use stream_set_blocking() instead)
* split() (use preg_split() instead)
* spliti() (use preg_split() with the 'i' modifier instead)
* sql_regcase()
* mysql_db_query() (use mysql_select_db() and mysql_query() instead)
* mysql_escape_string() (use mysql_real_escape_string() instead)
* Passing locale category names as strings is now deprecated. Use the LC_* family of constants instead.
* The is_dst parameter to mktime(). Use the new timezone handling functions instead.

Deprecated features:

* Assigning the return value of new by reference is now deprecated.
* Call-time pass-by-reference is now deprecated.
* The use of {} to access string offsets is deprecated. Use [] instead.
Mislim da su to jako glupo smislili. Ne radi se o tome da li ću ja ili ti da upgade-ujemo u php 5.3 (ili 6) već šta se dešava sa postojećim LIVE sajtovima. Opet će da se napravi situacija kao kod prelaza sa php4 na php5 kada provajderi nisu hteli da stavljaju php5 jer pola sajtova ne bi radilo.

Recimo, sada ja imam sajt na na nekom serveru i provajder upgrade-uje na php6. I onda me cima klijent pa se zali da ne radi sajt a ja kazem "pa nisam nista menjao, nemoguće da ne radi". On u panici kuka "pa ... vidis da ne radi - uzmi i sredi - platili smo ti za to". A ti onda sedi i radi za dzabe jer su brainiacs smislili da poizbacuju gomile funkcija.

holodoc 17. 10. 2009. 04:41

Citat:

Originalno napisao bluesman (Napišite 74214)
Mislim da su to jako glupo smislili. Ne radi se o tome da li ću ja ili ti da upgade-ujemo u php 5.3 (ili 6) već šta se dešava sa postojećim LIVE sajtovima. Opet će da se napravi situacija kao kod prelaza sa php4 na php5 kada provajderi nisu hteli da stavljaju php5 jer pola sajtova ne bi radilo.

Pa upravo zato kod kvalitetnijih hosting provajdera postoji opcija izbora PHP verzije tako da klijent ili osobe zadužene za web sajt mogu da biraju koja verzija PHPa će "terati" njihov web sajt u bilo kom trenutku. S druge strane malo je verovatno da bi bilo koji ozbiljan provajder samoinicijativno uradio mandatorni upgrade na verziju softvera koja prethodno nije dovoljno dugo "odstajala" u repozitorijumima za trebljenje bubica čisto da bi bio u trendu i pratio modu. Zato mislim da migracija na 5.3 neće biti toliko bolna koliko se možda u ovom trenutku čini jer dok on dođe do statusa produkciono upotrebljivog PHP 6 će verovatno odavno zakucati na vrata. A i javna je tajna da PHP 5.3 nije ništa drugo nego prvi mačići "šestice".

Što se tiče izmena u 5.3 dovoljno je reći da su tolike da veći deo trenutnog gotovog softvera ne može da funkcioniše na njemu bez bar ponekog problema. Taj E_DEPRECATED je recimo napravio više štete nego koristi a u prvim buildovima navodno stabilne verzije bilo je problema da se uopšte isključi da se ne prijavljuje pa su recimo custom headeri pucali masovno. Veliki problem većini gotovih aplikacija je i to referenciranje funkcija što su dobro osetili na svojoj koži svi sistemi koji imaju implementiran neki vid hook sistema (Joomla, Drupal itd.) koji na taj način funkcioniše. Dosta problema se javilo i sa PHP framework sistemima koji žongliraju sa podrškom kako za "peticu" tako i za "četvorku" PHP-a (recimo CodeIgniter koji još uvek ima problema sa nekim bitnim stavkama zbog čega bi razvojni tim trebalo da porazmisli dokle želi da pruža podršku za PHP 4 u svom frameworku).

Da rezimiram. PHP 5.3 je u ovom trenutku, sudeći po reakcijama, stvar čiste mode. Sve što od novosti donosi jednostavno nije vredno da se uopšte razmišlja o njemu ni kao o test platformi a kamoli produkcionoj tako da bi buildovi iz 5.2.x game trebali još dugo da budu aktuelni kada su hostinzi u pitanju.

mb_sa 17. 10. 2009. 10:15

Citat:

Originalno napisao bluesman (Napišite 74214)
Recimo, sada ja imam sajt na na nekom serveru i provajder upgrade-uje na php6. I onda me cima klijent pa se zali da ne radi sajt a ja kazem "pa nisam nista menjao, nemoguće da ne radi". On u panici kuka "pa ... vidis da ne radi - uzmi i sredi - platili smo ti za to". A ti onda sedi i radi za dzabe jer su brainiacs smislili da poizbacuju gomile funkcija.

Iako si u pravu glede ovoga, ja moram priznati da mi je i malo drago zbog ovi funkcija i opcija koje su izbacili, jer kao sto se zna, radi o stvarima koje se pokazale kao loše rješenje (uglavnom u smislu sigurnosti i brzine).

Mnoge će se stvari rješiti putem search&replace opcije u editoru, a i vec dugo vremena na "svakom koraku" je pisalo da su preg_ brze od ereg, da treba biti iskljuceno register_global, magic_quotes_gpc, magic_quotes_runtime...

dinke 17. 10. 2009. 10:22

Ma daj blues, ajde priznaj da li si i jednu jedinu od ovih deprecated f-ja koristio u poslednje vreme?

Vec 100 godina najavljuju da ce u PHP6 izbaciti kontroverzni magic_quotes, ovo je kontam poslednja "veca" revizija pre PHP6 i logicno je da je proglase "deprecated" kako bi se ljudi navikli na to. Kome sajtovi ne rade bez toga sto rece neko, moci ce da "trche" na PHP5.x dok se to ne sredi.

dinke 17. 10. 2009. 10:22

Inace uz snow po defaultu dolazi PHP 5.3 tako da sam i ja vec presao na isti :)

Aleksandar.Ilic 17. 10. 2009. 12:22

a ja licno, sam odavno prestao da koristim sve stvari koje su oznacene sa depreciated... zlu ne trebalo :)

Gargoyle 17. 10. 2009. 14:34

Citat:

Recimo, sada ja imam sajt na na nekom serveru i provajder upgrade-uje na php6. I onda me cima klijent pa se zali da ne radi sajt a ja kazem "pa nisam nista menjao, nemoguće da ne radi". On u panici kuka "pa ... vidis da ne radi - uzmi i sredi - platili smo ti za to". A ti onda sedi i radi za dzabe jer su brainiacs smislili da poizbacuju gomile funkcija.
Ovo mi se desilo previše puta, i jedno vreme sam mislio da je to stvarno moja odgovornost, i želeći da ispoštujem klijenta, ispravljao sam kôd (besplatno). Problemi su bili u upgrade-ovanju servera sa PHP4->PHP5. Naravno sada mi to ne pada na pamet da radim. U ugovoru jasno preciziram da niko ne može neovlašteno da "čeprka" po projektu koji sam ja izradio, a to uključuje i samog klijenta koji ne može (ne sme) da direktno pristupa na recimo ftp/mysql, ne sme da menja direktno fajlove i sl., niti provajder sme da (bez pitanja) menja konfiguraciju servera (što se inače redovno dešava po jeftinim shared hostingzima) -- osim ako nije posebno drugačije navedeno. Odnosno u slučaju kada oni to ipak rade, garancija ne važi, pa su dalje slobodni da rade šta hoće, o svom trošku. Dakle ili sam ja "gazda" ili je neko treće lice, ali nikako nismo zajedno gazde.

Citat:

Pa upravo zato kod kvalitetnijih hosting provajdera postoji opcija izbora PHP verzije tako da klijent ili osobe zadužene za web sajt mogu da biraju koja verzija PHPa će "terati" njihov web sajt u bilo kom trenutku
Tu dolazimo do ovoga. Pametno je zakupiti ovakav hosting, gde će se moći instalirati verzija po izboru, kada mi to želimo.

I naravno klijenta treba u startu informisati spram koje verzije se radi projekat, šta to znači, koje su implikacije, šta se očekuje u budućnosti i zašto, tako da kada i ako dodje do upgrade-a servera, da ne bude iznenađenja tipa "platili smo, popravljaj za džabe".

sinisabobic 17. 10. 2009. 14:35

Citat:

Originalno napisao dinke (Napišite 74220)
Ma daj blues, ajde priznaj da li si i jednu jedinu od ovih deprecated f-ja koristio u poslednje vreme?

Nije problem samo u tome da li je neko koristio ili nije, vec je problem u nasledjenim stvarima koje ima vecina programera a koje sada jednostavno rade pa nije bilo potrebe za izmenama

bluesman 17. 10. 2009. 19:59

Citat:

Originalno napisao dinke (Napišite 74220)
Ma daj blues, ajde priznaj da li si i jednu jedinu od ovih deprecated f-ja koristio u poslednje vreme?

Vec 100 godina najavljuju da ce u PHP6 izbaciti kontroverzni magic_quotes, ovo je kontam poslednja "veca" revizija pre PHP6 i logicno je da je proglase "deprecated" kako bi se ljudi navikli na to. Kome sajtovi ne rade bez toga sto rece neko, moci ce da "trche" na PHP5.x dok se to ne sredi.

Pa pazi ovo, koji je OBJEKTIVAN razlog da se onemogući:

PHP kôd:

set_magic_quotes_runtime(0); 

A možeš i dalje:
PHP kôd:

ini_set("magic_quotes_runtime"0); 

Prvo je deprecated, a drugo je sada ok? Zbog čega?

Slažem se da su te magic quotes samo pravile nepotrebnu zabunu i bile uzrok mnogih bug-ova, ali zašto izbaciti funkciju? Kada bi stavili da funkcija stoji samo ne radi ništa (jer je ionako izbačeno magic quotes) je daleko bolje za backward compatibility nego da kompletno izbace funkciju pa se generiše fatal error i puca script.

Dalje, globalno milijarde linija koda koriste "ereg" funkcije, šta ljudi da rade kada se to izbaci? Da menjaju sve svoje klase zbog toga? Kome će to da naplate?

Takođe sam puno koristio {} u stringovima, a šta sada da radim? Da pretražujem svuda gde sam to koristio da mi script ne bi pucao zbog gluposti.

Ja sam mislio da su ovi iz PHP nešto naučili u prethodnoj velikoj migraciji sa 4 na 5, ali oni sada prave još veće gluposti, i sve mi više liči na situaciju kada izigravaju Bogove "baš nas briga, tako je kako mi odlučimo, a ti ako nećeš da menjaš - neće ti raditi script".

Tako će i ovi što prave razne Joomle, CodeIgnitere i ostale slične stvari da totalno pošize od milijarde pitanja "od jednom mi se pojavljuje neka greška" ili "ne radi mi sajt" ili "prikazuje mi se prazna strana".

Što se tiče hosting provajdera, tu se na žalost najmanje pitaš ti. Prvo što retko imaš uticaja na izbor provajdera, a drugo što imaš još manje uticaja na njihove odluke.

Ipak mislim da ako neko hoće da pređe jednog dana na PHP6 neka skine ovaj 5.3 bar da vidi gde će imati problema.

dinke 17. 10. 2009. 22:29

Citat:

Originalno napisao bluesman (Napišite 74241)
Takođe sam puno koristio {} u stringovima, a šta sada da radim? Da pretražujem svuda gde sam to koristio da mi script ne bi pucao zbog gluposti.

Sticem utisak da ovo nisi skapirao. Ne radi se o iskljucenju "complex" sintakse (tipa "ovo je string sa varijablom {$var}" vec o tretiranju stringa kao niz (kao u C-u) tipa treci char je $string[2]. Ranije je za to moglo da se koristi $string{2} a sada je to deprecated.

Kao i za ereg(i) i kod ovoga jedan search/replace resava problem :)


Vreme je GMT +2. Trenutno vreme je 13:23.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.