DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
Staro 20. 01. 2010.   #1
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default type hinting in php 5.3

nemam 5.3 pri ruci da probam, jel dodat na kraju type hinting u funkcijama i za integer, string, boolean i sl. tipove?

Citam ovde nesto o tome kako je to bilo predlozeno da radi, i moram priznati da mi se ne dopada uopste... naravno, bolje bar neki type hinting, nego nikakav, ali mi se cini kao da ovakvo resenje nema mnogo veze sa filozofijom php-a.

Po ovom predlogu ako je f-ja definisana kao
PHP kôd:
function bla(int $a) {..} 
poziv tipa bla('1') ce da baci gresku. To je ok za jezike koji imaju zakucane tipove podataka, tamo takvo ponasanje ima smisla, ali posto je u php-u za funkcionalnost programa apsolutno nebitno da li je 1 ili '1', a 99% podataka sa kojima se radi su stringovi (jer $_POST i $_GET uvek vracaju string), onda bi (IMHO) ipak trebalo type-casting implementirati malo inteligentnije, da se gleda da li prosledjena vrednost moze pravilno da se castuje, a ne sam tip podatka.

Zapravo ako bi to tako uradili mislim da bi to bila jedna od najgenijalnijih izmena u PHP-u u poslednje vreme, jer bi ustedela gomilu provera, samo definises da u funkciji ocekujes nesto sto je validan integer, i ne moras da brines o tome vise, ni u samoj funkciji, ni kod pozivanja. Plus mnogo je brze da to proverava kompajler nego da se rucno pisu te provere.

Sta vi mislite?
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 20. 01. 2010.   #2
agvozden
profesionalac
Qualified
 
Datum učlanjenja: 16.02.2006
Poruke: 129
Hvala: 25
15 "Hvala" u 14 poruka
agvozden is on a distinguished road
Pošaljite poruku preko Skype™ za agvozden
Default

Mislim da se striktnim definisanjem moze doci i do odredjenog nivoa sigurnijeg koda.
Ionako mnogi vrse proveru prilikom primanja parametara. Ukoliko od $_POST ocekujes celi broj onda ces ga i provuci kroz int()... a opet to sve u vecini slucajeva treba provuci kroz bazu. Ukoliko radis sa postgresom tek onda dolazi do problema.
Odgovarala bi mi i definicija tipova podataka u samim definicijama clanova klase. Tako ne bih morao da upisujem pomocne komentare koji je tip podataka.
__________________
moj blog | moj veb sajt | moj gradic | moj region
agvozden je offline   Odgovorite uz citat
"Hvala" agvozden za poruku:
Staro 20. 01. 2010.   #3
LiquidBrain
Milan Cvejic
Wrote a book
 
Avatar LiquidBrain
 
Datum učlanjenja: 05.09.2006
Lokacija: Beograd
Poruke: 1.241
Hvala: 32
73 "Hvala" u 56 poruka
LiquidBrain će postati "faca" uskoro
Pošaljite poruku preko Yahoo za LiquidBrain
Default

Zbog cega je problem sa postgresom?
__________________
http://weevify.com
LiquidBrain je offline   Odgovorite uz citat
Staro 20. 01. 2010.   #4
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Citat:
Originalno napisao agvozden Pogledajte poruku
Odgovarala bi mi i definicija tipova podataka u samim definicijama clanova klase. Tako ne bih morao da upisujem pomocne komentare koji je tip podataka.
da, o tome sam i ja razmisljao, a to bi omogucilo i IDE da proverava varijable i odmah upozorava na probleme...
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 20. 01. 2010.   #5
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

Pazi nije samo to, fora je sto ako imas type hinting ovako:

PHP kôd:
function test (string $param)
{
    return 
$param;

i ako proslediš običan string ovako:

PHP kôd:
echo test ("proba"); 
Prijaviće error da parametar nije string instance: "...must be an instance of string, string given..."

Ne radi čak ni ovo:

PHP kôd:
$t = (string) "proba";
echo 
test ($t); 
pa ni ovo:
PHP kôd:
echo test ((string) "proba"); 
Jednostavno ne mogu se type-hintovati skalarne vrednosti, samo objekti i array:

PHP kôd:
function test (array $param)
{
    return 
$param;
}

print_r (test (array('proba'))); 
^ to će da radi.

E sad ... ovo za string, int ... uopšte mi nije jasno zašto je to tako.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Staro 22. 01. 2010.   #6
sinisabobic
član
Certified
 
Avatar sinisabobic
 
Datum učlanjenja: 14.08.2008
Lokacija: Beograd
Poruke: 73
Hvala: 60
173 "Hvala" u 16 poruka
sinisabobic is on a distinguished roadsinisabobic is on a distinguished road
Pošaljite ICQ poruku za sinisabobic Pošaljite poruku preko MSN za sinisabobic Pošaljite poruku preko Skype™ za sinisabobic
Default

Nisam siguran al mislim da se od 5.1 verzije nista nije menjalo po tom pitanju sto znaci da string i integer ne rade jer nisu jos podrzani...
__________________
Celebrity Wallpapers / Male Wallpapers
sinisabobic je offline   Odgovorite uz citat
Staro 22. 01. 2010.   #7
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

@blues: To znaci da nisu jos dodali ovaj patch koji je predlagan, ima gore link u mom prvom postu sa opisom kako je to bilo zamisljeno da se implementira za int i string. Iskreno mozda je i bolje sto nisu menjali, posto mi se taj doticni predlog i ne svidja narocito.
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 23. 01. 2010.   #8
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

Ne vidim ja nešto posebno sporno sa ovim predlogom. To će smanjiti i one klasične greške pri validaciji input-a. Tačno je da je većina stvari iz request, pa samim tim i string, zato dobar kod uvek ima validaciju tipa podataka pre nego što ga koristi, oviakvim predlogom može da se smanji i svaka funkcija za po red-dva. Ako ja moram na početku svake funkcije:

PHP kôd:
function getById ($id
da radim

PHP kôd:
$id intval($id); 
Sa ovakvom deklaracijom:

PHP kôd:
function getById (int $id
mogao bih da preskočim taj red sa intval() ako se varijabla automatski konvertuje u int.

Meni je veći problem ovo kako je sada implementirano, ni na nebu ni na zemlji.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Staro 23. 01. 2010.   #9
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

fora je sto ne mozes da preskocis, i dalje bi morao da uradis intval($id) pre nego sto ga prosledis f-ji, jer bi ti inace bacila gresku. Ne kazem da je to lose, ali bilo bi bolje da uopste ne moras da konvertujes nesto u int, a da opet imas automatsku proveru da je vrednost ocekivanog tipa
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 23. 01. 2010.   #10
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

Jel vama taj type weakness u PHP-u stvarno toliko znači?
jablan je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
Time data type - Oracle Bozha SQL baze podataka - Sponzor: Baze-Podataka.net 4 18. 04. 2009. 10:39
input type=file i njegov value japan PHP 6 30. 05. 2008. 19:43
Type and hit Send Ilija Studen Web design, Layout, User Interface 24 19. 07. 2007. 17:27
type 1 font iz css-a japan (X)HTML, JavaScript, DHTML, XML, CSS 4 08. 03. 2007. 09:03


Vreme je GMT +2. Trenutno vreme je 16:50.


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.