Jump to content
php.lv forumi

Recommended Posts

Posted
Cik man zināms @ netaisa ciklu. @ lieto, lai lietotājs neredzētu kļūdas. Piemēram:

Ja raksta mysql_connect, bet nevar piekonektēt, tad lietotājs redzēs kļūdas paziņojumu (pie attiecīgiem error_reporting), a bet, ja raksta @mysql_connect, tad pie jebkādiem erorr_repoerting vērtībām, lietotājs neko redzēs, un kļūdas varēs apstrādāt programātiski un attiecīgi rīkoties.

Kļūdas apstrādāt diez vai varēs. Viņš pat neiepīkstēsies, ja kaut kas noies greizi. Tā arī ir tā atšķirība. Kļūdas var apstrādāt tad, ja nav @ priekšā un tu esi nodefinējis savu error hadling funkciju. Vai arī tad, ja tu izmanto PHP5 un viņa try..catch struktūru

Posted

Ar apstrādāt kļūdas biju domājis to, ka dažas fukcijas, piemēram, mysql_query, atgriež FALSE, ja noiet kautkas dēlī. :) Un tad programētājs raksta:

 $result = @mysql_query('select 1+1');
 if ($result === false)
 {
    echo 'notikusi liela nelaime';
 }
 else
 {
   $row = mysql_fetch_row($result);
   ...
 }

Posted

arī šis te nostrādās:

if (!($result = @mysql_query('select 1+1')))

{

echo 'notikusi liela nelaime';

}

pēc php "labās rokas" likuma tik novērtēts mysql_query('select 1+1') gabals.

te var būt 2 rezultāti:

a) atgriež false - nepareizs query

B) atgriež "tukšu" vērtību - query izpildās, bet neatgriež resursa pointeri

abos gadījumos @ nospiež kļūdas un $result tāpatās iegūst "tukšu" vērtību (NULL, vai tukšvirkni - '', fvz). Tukšvērtības iekš if pārtop par boolean false.

×
×
  • Create New...