Jump to content
php.lv forumi

Kāpēc PHP tik ļoti sux'o, bet tomēr mēs visi to lietojam


daGrevis

Recommended Posts

Kura tad ir tā viena googles valoda?

 

Tādā gadījumā pasaulē būtu 1 programmēšanas valoda,1 os un 1 autoritāte. Ideāla nākotne,uz kuru jau tagad google tiecas.

Link to comment
Share on other sites

  • Replies 257
  • Created
  • Last Reply

Top Posters In This Topic

Es saprotu un nestrīdos ka vajag exceptionus visur kur tas var būt kritiski,bet ar ko tevis minētais:

try:
doSomethingWithNode(xmlNode); // throws NumberFormatException
 catch NodeEmtpyFriendlyException e:

būs labāks par:

if(is_object($xmlNode) && $xmlNode->length) {
// Viss notiek
}

 

1) es saku, ka konkrētajā gadījumā, tas, ka nav iespējas ar Exception apstrādāt, bet uzreiz ir Fatal Error ir čerez ž.

2) tu man uzbrauc, ka man nepatīk "papildus iespējas izmantot to apstrādes metodi kura liekas konkrētā gadījumā ērtāka"

3) paprasu tev parādīt, kā tad es varu lietot Exception konkrētajā gadījumā

4) sāc stāstīt, cik viss īstenībā ir kruta bez Exception, kaut arī neizproti to būtību

 

WAT?

 

 

Kas attiecas uz OOP,tad tas viss ir forši,bet kaut kādos mini skriptos neredzu problēmu,kāpēc lai to visu maksimāli vienkārši neizdarītu.

Tad PHP ir tikai mini skriptiem paredzēta?

 

Tur mēs laikam pat varētu būt vienisprātis

Link to comment
Share on other sites

Kura tad ir tā viena googles valoda?

Es runāju par google tieksmi visu pakļaut savai kontrolei,un tikai priecāšos ja pēc gadiem 10 pierādīsies,ka paranoja būs izrādījusies pilnīgi nepamatota un arī Go! ir tikai tāds ņezahuj darīt prikols bez nekādiem tālejošiem plāniem.

Link to comment
Share on other sites

1) es saku, ka konkrētajā gadījumā, tas, ka nav iespējas ar Exception apstrādāt, bet uzreiz ir Fatal Error ir čerez ž.

2) tu man uzbrauc, ka man nepatīk "papildus iespējas izmantot to apstrādes metodi kura liekas konkrētā gadījumā ērtāka"

3) paprasu tev parādīt, kā tad es varu lietot Exception konkrētajā gadījumā

4) sāc stāstīt, cik viss īstenībā ir kruta bez Exception, kaut arī neizproti to būtību

1) Joprojām neredzu trūkumu valodā,ja viss nav pakļauts Exception,bet gan ir iespēja ignorēt kļūdu un pārbaudot funkcijas vērtību,turpināt darbu ja viss ok.

2) Ar frāzi par apstrādes metodi biju domājis iespēju gan rakstīt savus handlerus,gan ignorēt kļūdu,gan izmantot Exception ja uzskata to par vajadzīgu (pats neuzskatu ka vajag dajebkur) pašā valodā nevis tikai šajā reizē. Ja viss tas pats pieejams arī iekš pitona,tad ļoti atvainojos.

3) Piekrītu,ka nevar šajā gadījumā. Neskatoties uz to,problēma tika topikā lieliski atrisināta un trūkumu valodā tā arī neatradu,jo laikam nav sajēgas par OOP

4) Palieku pie viedokļa ka try/catch nav vajadzīgs pie katras funkcijas. Nu tā mana problēma. Bankas sistēmas nekodēju.

Link to comment
Share on other sites

1) Joprojām neredzu trūkumu valodā,ja viss nav pakļauts Exception,bet gan ir iespēja ignorēt kļūdu un pārbaudot funkcijas vērtību,turpināt darbu ja viss ok.

2) Ar frāzi par apstrādes metodi biju domājis iespēju gan rakstīt savus handlerus,gan ignorēt kļūdu,gan izmantot Exception ja uzskata to par vajadzīgu (pats neuzskatu ka vajag dajebkur) pašā valodā nevis tikai šajā reizē. Ja viss tas pats pieejams arī iekš pitona,tad ļoti atvainojos.

3) Piekrītu,ka nevar šajā gadījumā. Neskatoties uz to,problēma tika topikā lieliski atrisināta un trūkumu valodā tā arī neatradu,jo laikam nav sajēgas par OOP

4) Palieku pie viedokļa ka try/catch nav vajadzīgs pie katras funkcijas. Nu tā mana problēma. Bankas sistēmas nekodēju.

 

1) Normālā gadījumā tiek izmests exception, tu to noķer, apstrādā un turpini darbu, jo viss ok.

2) Python visa kļūdu apstrāde balstās uz exceptions un tur arī var izvērsties pēc sirds patikas ar ignorēšanu, saviem handleriem utt. Iespējams īsti nesapratu, ko domāji.

3) Trūkums valodā ir tas, ka nomirst ar Fatal Error bez normāla stacktrace logfailos, ja nemēģina uzminēt kur un kā varētu būt kļūda un to apiet. Kā jau Atslēgas kungs mēģināja paskaidrot.

4) Protams, pie katras funkcijas tas nav vajadzīgs. Ir vajadzīgs, lai būtu skaidrs, kas nogāja greizi un vismaz viens standarta mehānisms, kas der visos kļūdu apstrādes gadījumos.

 

Ar labu nakti.

Edited by edgarsj
Link to comment
Share on other sites

Tak var jau PHP uzrakstīt php erroru handleri un automātiski mest exceptionus uz visām kļūdām. Protams, es piekrītu, ka šis ir PHP mīnuss, bet salīdzinoši viegli risināms, PHP plusi tomēr pārspēj citas skriptu valodas priekš weba.

Link to comment
Share on other sites

Tiem, kuri deva linkus uz "A fractal of bad design", iesaku palasīt šo: http://marc.info/?t=133407516900003&r=1&w=2 - tas no php-internals mailing list diskusijas par šo rakstu. Atvers dažiem acis, kā tā raksta autors PHP redzēja tālajā bērnībā.

 

Par XML apstrādi. Čaļi, jus esat ķerti vai? Jums ko, nav ne jausmas ka XML apstrāde bāzējās uz C libxml2 bibliotekas, kuraj ir uzrakstīts wrapper lai ar to varētu strādāt PHP skriptos? Atvainoiet man, bet tā kā PHP error handling ir tāds, kāds viņš ir (vēsturiski, un tiem kas grib Exception - lūdzu, tas ir darams pāris koda līnijās) - strādā ar to. Un viss būtu labi, ja libxml2 nebūtu sava ideja kā darboties ar XML kļūdām - viņai ir savs iekšējais error handling mehanisms, kuru izraut no tās nav iespējams.

 

Starp citu, par valid XML. Ho-ho, čali. Es strādāju daudz ar visāda veida merčantiem, bankām u.t.t. API - man katra XML atbilde obligāti tiek apstrādāta ar libxml_use_internal_errors(true) - praktiski visi laiku pa laikam kaut ko sačakarē ar XML, ka parsers nevar to apstrādāt. Pāris gadijumos XML'am nebīja root node pavisam. Citos gadijumos ja notiek kāda kļūda - XML var būt neprognozējams. Un man caur manu sistēmu mēnesī parplūst pāris miljoni usd - man ir jagarantē ka es saņēmu notifikāciju caur XML API un ja es pats kaut ko sūtu un man atbildē ir sūds, bet tajā sudā ir rakstīts ka operācija tika izpildīta - man to ir jazin. A jūs te sakat jāmet Exception un beigt darbu. Vajadzētu dažus iemest vidē, kur nauda plūst un paskatīties kā tās oliņas saspiedīsies, kad sanāks ka tāda gudrinieka dēļ kaut kur palika kādi 10-15 tūkstoši.

 

Velns parāvis - da paskataties uz to, kas jums ir savajās valodās - puse biblioteku būs "binding to the C library witch exposes functions ...". Un ja paskatities reali - gandrīz katrajā var atrast kaut ko tādu, uz ko var rādīt ar pirkstu un ņirgāties. Ruby/Python tika radītas speciāli, un vienālga tām ir savas problēmas. PHP radijās netīšām, un attīstās. Strauji attīstās un paliek labāks, tīrāks. Un tās, ka tām ir problēmas ar standarta biblioteku (funkciju nosaukumi, parametru secība) - visi to zin, bet lai to majnīt ir vajadzīgi milzīgi resursi. Un vel jāpatur BC. Un vispāri nevienam tas nemaisa tik stipri, lai kāds uzsāktu šo procesu.

Link to comment
Share on other sites

Labrīt kungi :)

 

Tak var jau PHP uzrakstīt php erroru handleri un automātiski mest exceptionus uz visām kļūdām. Protams, es piekrītu, ka šis ir PHP mīnuss, bet salīdzinoši viegli risināms, PHP plusi tomēr pārspēj citas skriptu valodas priekš weba.

 

Vai minētajā gadījumā (http://php.lv/f/topi...ec-fatal-error/) tavs error handleris noķers to Fatal Error? Nē? Tad par ko tu runā? Izplati bullshit kā parasti. Trollis.

 

Tiem, kuri deva linkus uz "A fractal of bad design", iesaku palasīt šo: http://marc.info/?t=...6900003&r=1&w=2 - tas no php-internals mailing list diskusijas par šo rakstu. Atvers dažiem acis, kā tā raksta autors PHP redzēja tālajā bērnībā.

paklikšķināju uz pāris ziņām, nekā tāda neredzēju. varbūt ir kāds konkrētāks links? kaut gan tas, ko mēs visi esam redzējuši / domājuši bērnībā ir diezgan nesvarīgi (es piem. biju tīri lielā sajūsmā par Basic).

 

Par XML apstrādi. Čaļi, jus esat ķerti vai? Jums ko, nav ne jausmas ka XML apstrāde bāzējās uz C libxml2 bibliotekas, kuraj ir uzrakstīts wrapper lai ar to varētu strādāt PHP skriptos? Atvainoiet man, bet tā kā PHP error handling ir tāds, kāds viņš ir (vēsturiski, un tiem kas grib Exception - lūdzu, tas ir darams pāris koda līnijās) - strādā ar to. Un viss būtu labi, ja libxml2 nebūtu sava ideja kā darboties ar XML kļūdām - viņai ir savs iekšējais error handling mehanisms, kuru izraut no tās nav iespējams.

 

Reducējamies uz to, ka sāpe ir tieši tajā wrapperī. Nez kāpēc priekš Python tāds wrapperis uztaisīts ar visām Exception. Un šis nav vienīgais sūkājošais wrappers.

 

Starp citu, par valid XML. Ho-ho, čali. Es strādāju daudz ar visāda veida merčantiem, bankām u.t.t. API - man katra XML atbilde obligāti tiek apstrādāta ar libxml_use_internal_errors(true) - praktiski visi laiku pa laikam kaut ko sačakarē ar XML, ka parsers nevar to apstrādāt. Pāris gadijumos XML'am nebīja root node pavisam. Citos gadijumos ja notiek kāda kļūda - XML var būt neprognozējams. Un man caur manu sistēmu mēnesī parplūst pāris miljoni usd - man ir jagarantē ka es saņēmu notifikāciju caur XML API un ja es pats kaut ko sūtu un man atbildē ir sūds, bet tajā sudā ir rakstīts ka operācija tika izpildīta - man to ir jazin. A jūs te sakat jāmet Exception un beigt darbu. Vajadzētu dažus iemest vidē, kur nauda plūst un paskatīties kā tās oliņas saspiedīsies, kad sanāks ka tāda gudrinieka dēļ kaut kur palika kādi 10-15 tūkstoši.

 

Dārgais Guru, piemēros augstāk taču bija rakstīts, ka varam izmesto Exception noķert, attiecīgi apstrādāt un turpināt darbu. Arī tev nav zināms, kā pareizi strādāt ar Exception mehānismu? Es gaidīju, ko vairāk no PHP internals listes biedra un valodas virziena iespaidotāja. Bet, acīmredzot, tas kā reizi ir piemērs, kāpēc ar PHP ir kā ir.

 

PHP radijās netīšām, un attīstās. Strauji attīstās un paliek labāks, tīrāks. Un tās, ka tām ir problēmas ar standarta biblioteku (funkciju nosaukumi, parametru secība) - visi to zin, bet lai to majnīt ir vajadzīgi milzīgi resursi. Un vel jāpatur BC. Un vispāri nevienam tas nemaisa tik stipri, lai kāds uzsāktu šo procesu.

 

Tieši tāpēc arī man PHP nepatīk lietot, jo trūkumu ir stipri vairāk kā citām valodām tevis minēto iemeslu dēļ. Un neviens tos nelabos. Ja tev patīk, tad lieto un priecājies.

 

Par Backwards Compatibility - ar prieku skatos uz Python3, kur beidzot visi stringi by default būs unicode. Tur viņi nebaidās uzlabot valodu, salaužot BC. Jo arī piedāvā skaidru ceļu, kā migrēt.

Link to comment
Share on other sites

Kur problēma?

 

http://codepad.org/njb3juqT

 


function error_handler($errno, $errstr, $errfile, $errline ) {
   throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("error_handler");

$doc = new DOMDocument();
try {  
 $doc->loadXML('<root><sajats xml></root>');
} catch (Exception $e){
 echo "lalala";
}

 

bez error handlera: http://codepad.org/Jt7ol0ho

Link to comment
Share on other sites

Visus exceptionus tāpat neparedzēsi, katram apstrādi neuzrakstīsi. Pārītim uzrakstīsi, bet būs neparedzēts exceptions un jāsprāgst nost gribot negribot.

 

Tad vismaz zināsi konkrēti kāpēc nosprāga, nevis vienkārši Fatal Error. Un arī neparedzēto exceptionu var noķert un apstrādāt gracefully, piemēram, kā kļūdas paziņojumu lietotājam.

Link to comment
Share on other sites

Kur problēma?

 

http://codepad.org/njb3juqT

 


function error_handler($errno, $errstr, $errfile, $errline ) {
   throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("error_handler");

$doc = new DOMDocument();
try {  
 $doc->loadXML('<root><sajats xml></root>');
} catch (Exception $e){
 echo "lalala";
}

 

bez error handlera: http://codepad.org/Jt7ol0ho

 

 

Lūdzu piemēru ar simplexml_load_file, demagog.

Link to comment
Share on other sites

Nebūs uz codepad, jo nevaru tur uzlikt papildus a.xml failu, bet lokāli izmet normālu exceptionu.

 


<?php
function error_handler($errno, $errstr, $errfile, $errline ) {
   throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("error_handler");

try {  
 simplexml_load_file("a.xml");
} catch (Exception $e){
 echo "lalala";
}

 

 

P.S.

Varu piedāvāt tik daudz: http://codepad.org/JJZCrHrv

Bet šis saistīts ar to, ka neļauj atvērt resursu, nevis xml satura kļūdu, bet tāpat skaisti izmet exceptionu.

Edited by codez
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...