Jump to content
php.lv forumi
Sign in to follow this  
codez

Kā izveidot vienkāršu Routing Framework-u

Recommended Posts

'id' => (isset($p[2]) && is_numeric($p[2])) ? $p[2] : ''

 

is_numeric id piešķirs ne '' vērtību arī tad, ja pados '3.1415' un '1e4', jau otrais mēģinājums uztaisīt "pareizāk" un garām. Varbūt tomēr šādi ir vienkāršāk?:

 

$id=(int)@$p[2];

Edited by codez

Share this post


Link to post
Share on other sites

nu tad

if(isset($p[2]) {
$id = (int)$p[2];
}

 

uzreiz vieglāk lasāms kods bez performance penalty

Edited by spainis

Share this post


Link to post
Share on other sites

Ar ko objektīvi

 

if(isset($p[2]) {
$id = (int)$p[2];
}

 

labāks par

 

$id=(int)@$p[2];

 

????

 

Ja interesē tādi performances sīkumi, tad jākodē c++.

Un vieglāk jau nu gan nav lasāms. Ja pārzin abu paternu funkcionalitāti no galvas, tad vieglāk lasāms vienmēr ir īsākais.

Edited by codez

Share this post


Link to post
Share on other sites

ar šo

 

ir jābūt idiotam, lai nemēģinātu optimizēt koda ātrdarbību

 

jeb šajā gadījumā, kā codez saka tā tam būs būt XD

Edited by spainis

Share this post


Link to post
Share on other sites

Es nekad nedzīšos pakaļ tādiem performances sīkumiem, kas man apgrūtina programmēt, jo tās vietas nav bottleneck-i. Nu, ies aplikācija par 0.0001% ātrāk?

Kas man no tā, ka tā rindiņa eis ātrāk par 0,00002 sekundēm, ja nākamjā man ir db kverijs, kurš aizņem 0,1 sekundi? nekas.

Share this post


Link to post
Share on other sites

ir jābūt idiotam, lai nemēģinātu optimizēt koda ātrdarbību

 

Esi kaut ko dzirdējis par 80/20 principu? Jā nē, tad pameklē un pamācies.

Cik saprotu, tad OOP tu neizmanto, jo savādāk esi paša nosaukts idiots, jo OOP PHP ir lēnāks kā programmēšana izmantojot funkcijas.

 

P.S. Un vispār kāpēc tev tēlot idiotu un programmēt PHP? Viņš taču ir tik lēns, kodē asamblerā.

Edited by codez

Share this post


Link to post
Share on other sites

'id' => (isset($p[2]) && is_numeric($p[2])) ? $p[2] : ''

 

is_numeric id piešķirs ne '' vērtību arī tad, ja pados '3.1415' un '1e4', jau otrais mēģinājums uztaisīt "pareizāk" un garām. Varbūt tomēr šādi ir vienkāršāk?:

 

$id=(int)@$p[2];

 

Nu es neteiktu, ka garām. Tavā piemērā tu tieši tāpat izvadi parametru no urļa. Tad, kur ir problēma manā piemērā - izvadīsies 3.1415 and so what ? Tā tāpat nav nopietna datu validācija un izvade.

Share this post


Link to post
Share on other sites

Tad, kur ir problēma manā piemērā - izvadīsies 3.1415 and so what ?

 

Problēma ir tur, ka realitātē urļa datus tālāk izmanto, lai būvētu db kveriju.

 

 

$id=(int)@$p[2];
if ($id!=0){
 $res=mysql_query('SELECT * FROM users WHERE id='.$id);
}

$id=(isset($p[2]) && is_numeric($p[2])) ? $p[2] : '';
if ($d!=''){ // ups, izsaucam kveriju arī tad, ja padoti '3.1415' vai '1e4', kas nav valīdi id 
 $res=mysql_query('SELECT * FROM users WHERE id='.$id);
}

Edited by codez

Share this post


Link to post
Share on other sites

Nu vecīt, kad runa būs par kverijiem, tad arī datus apstrādās atbilstoši situācijai.

 

Bet ja tev tik ļoti gribas būt sīkumainam - vai tad man žēl:

 

Tavā gadījumā ir muļķīgi if'ot tikai vienu keisu, kur tad paliek negatīvie int'i (redz, tas pats, par ko piesējies man) ? Pastudē nākamreiz http://www.php.net/manual/en/language.types.integer.php pirms gribi pierādīt savu taisnību :)

Share this post


Link to post
Share on other sites

Bet ja tev tik ļoti gribas būt sīkumainam - vai tad man žēl:

 

EPIC, ņemot vērā to ,kurš te pirmais sāka kļūt sīkumains.

Share this post


Link to post
Share on other sites

Neredzēju kurā vietā tu man aizrādīji, tikai piedāvāji kaut kādus citus variantus, kas manuprāt ir sliktāki (daži pat nestrādājoši). Turpinot tev paskaidrot, kāpēc tavs variants man šķiet sliktāks, tu sāki man piedēvēt sīkumainību, aizmirsdams, ka diskusija mūsu starpā sākās tieši ar tavu sīkumainību. Turpmāk lūdzu tevi iztikt bez divkosības.

Edited by codez

Share this post


Link to post
Share on other sites

codez, šoreiz rATRIJam taisnība ne tikai no performance viedokļa, bet arī no pareizrakstības viedokļa:

$p[0]='asdf';
var_dump((int)@$p[0]);
$p[0]=0;
var_dump((int)@$p[0]);
unset($p[0]);
var_dump((int)@$p[0]);

Visās konstrukcijās rezultāts vienāds

Share this post


Link to post
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...
Sign in to follow this  

×
×
  • Create New...