Jump to content
php.lv forumi

Mainīgo tīrīšana


spynode

Recommended Posts

Gribēju uzzināt par mainīgo tīrīšanas (unset) lietderīgumu. Cik garā kodā un pie kāda mainīgo skaita tas varētu būt nepieciešams (vēlams), jo man liekas, ka ne pārāk garos kodos mainīgos tīrīt nav vērts jo tas tikai sabremzē skriptu un atmiņas tīrīšana pusgaros kodos nav lietderīga, jo PHP tāpat pēc skripta palaišanas visus mainīgos attīra.

Link to comment
Share on other sites

Ņu, dažiem strādā tāda funkcija kā memory_get_usage(), ar to skaisti varēja paskatīties.

 

/me lieto unset pārsvarā 3 gadījumos:

 

Gadījums 1: type juggling

Kaut kur kodā $tmp=array(); pēc tam gribu izmantot $tmp kā ordināro tipu (str,float,int,bool). Lai nebūtu kļūdu/notīšu, taisam unset($tmp); un bliežam savu $tmp='a,jh;fdsf';

 

Gadījums 2: lielu failu ielasīšana un bilžu ģenerēšana.

pēc dafaulta php ir ierobežots oper. atmiņas daudzums (kā nu kuram, bet parasti 8mb)

Teiksim, man jāapstrāda liels fails (6 mb) un vēl jāuztaisa kāda 1024x768 bildīte ar image* funkcijām kas arī ļoti labi havo RAMu, tad pēc faila apstrādes tā mainīgajam taisu unset. Ja jāapstrādā divi faili, tad vienkārši otro ielasu tai pašā mainīgajā, kas automātiski atmet pirmo vēŗtību un atbrivo RAMu. Bildēm obligāti taisu imagedestroy() (tas kā fclose() - varbūt nav vienmēr obligāts, bet labāk būtu ja iraid).

 

Gadījums 3: mainīgo "at"iniciēšana

 

$canWrite=1;

$canDelete=2;

 

if (!$isAdmin)

unset($canWrite, $canDelete);

....

if (!empty($canWrite))

switch($canWrite)

{

case 1:

//level 1

break;

case 2:

//more options, level 2

break;

}

 

bet šo gan tā paretāk (un piemērs arī so-so)

Link to comment
Share on other sites

×
×
  • Create New...