Theory
નળીકામ ફરી ફરી ન લખો
આ unit માં અગાઉ તમે input ની ચકાસણી, session નું સંચાલન અને file uploads હાથે લખ્યાં હતાં. એ ચાલ્યું ખરું, પણ દરેક પ્રોજેક્ટ એ જ ઝીણવટભર્યો અને સલામતી સાથે જોડાયેલો code ફરી લખે, અને હાથે લખેલી દરેક આવૃત્તિમાં નવી ભૂલનું જોખમ રહે.
Framework તમને બરાબર આમાંથી જ બચાવે છે. CodeIgniter પુનરાવર્તિત કામ માટે ચકાસાયેલાં, ફરી વાપરી શકાય એવાં tools સાથે આવે છે: validation ની library, session તથા flash messages, સલામત uploads, અને load કરી શકાય એવાં helpers. PHP નો આ છેલ્લો પાઠ portal ને એ tools ફરી શોધવાને બદલે framework નાં તૈયાર શક્તિશાળી tools વાપરતું બતાવે છે, અને framework અપનાવવાનું આખું કારણ પણ એ જ છે.
Theory
Validation અને flashdata
Form validation ની library: તપાસ હાથે લખવાને બદલે તમે નિયમો જાહેર કરો છો, જેમ કે required, valid_email, min_length[6], અને CodeIgniter એ બધા એક જ call માં તપાસી લે છે તથા સુસંગત ભૂલના messages બનાવે છે. જાતે લખેલાં if statements કરતાં આ વધુ સ્વચ્છ છે અને એમાં ભૂલ થવી પણ અઘરી છે.
Sessions અને flashdata: CI PHP નાં sessions ને વીંટે છે અને એમાં flashdata ઉમેરે છે: એટલે કે એવો session નો data જે બરાબર એક જ પછીના request સુધી ટકે છે અને પછી જાતે ભૂંસાઈ જાય છે. એક વારના messages માટે એ ઉત્તમ છે: સફળ registration પછી તમે ખાતરીના page પર redirect કરો છો અને "Registration successful!" એવો flash message ગોઠવો છો; એ એક વાર દેખાય છે, પછી ગાયબ થઈ જાય છે, એટલે page refresh કરવાથી એ ફરી દેખાતો નથી. આ પ્રમાણભૂત post-redirect-get ઢબ છે.
Practical
Validation અને redirect પછીનો flash message
<?php
// Inside a controller method handling the registration POST
public function submit() {
$rules = [
"name" => "required|min_length[2]",
"email" => "required|valid_email",
];
if (! $this->validate($rules)) {
// Validation failed: show the form again with errors
return view("register", ["errors" => $this->validator->getErrors()]);
}
// Success: save via the Model, then set a ONE-TIME flash message
session()->setFlashdata("msg", "Registration successful!");
return redirect()->to("/thanks"); // flash shows once on /thanks
}
?>
Theory
Uploads, helpers અને libraries
File uploads: CI નું upload નું સંચાલન પ્રકાર તથા કદ ચકાસે છે અને file ને સલામત રીતે ખસેડે છે: એટલે કે Unit 2 વાળું કાચું $_FILES તથા move_uploaded_file નું કામ (અને એના ફાંદા) ચકાસાયેલા tool માં વીંટી લે છે.
Helpers સામે libraries, પરીક્ષાની જાણીતી જોડી:
- Helpers એ સ્વતંત્ર functions ના સંગ્રહ છે (જેમ કે
form_helper,url_helper) જેને જરૂર પડે ત્યારે તમે load કરો છો - Libraries એ classes છે જે સગવડો પૂરી પાડે છે (session, validation, email)
તમને જોઈતું helper કે library તમે load કરીને વાપરો છો, અને એમ framework નો ચકાસાયેલો code ફરી વપરાય છે. આખો સૂર એ જ છે: framework તમને ભરોસાપાત્ર components આપે છે જેથી તમે દર વખતે નળીકામ હાથે ઘડવાને બદલે સગવડો ગોઠવો.
Quiz
CodeIgniter માં flashdata શેના માટે વપરાય છે?
- Database માં કાયમ માટે store કરેલો કાયમી data
- એવો session નો data જે બરાબર એક જ પછીના request સુધી ટકે છે અને પછી જાતે ભૂંસાય છે: 'Registration successful!' જેવા એક વારના messages માટે આદર્શ
- Cookie નો વધુ ઝડપી પ્રકાર
- Flash ના animation માં દેખાતો data
Show the answer
એવો session નો data જે બરાબર એક જ પછીના request સુધી ટકે છે અને પછી જાતે ભૂંસાય છે: 'Registration successful!' જેવા એક વારના messages માટે આદર્શ
Flashdata એ session નો એવો data છે જે બરાબર પછીના એક જ request સુધી જીવે છે અને પછી આપોઆપ કઢાઈ જાય છે, જેથી redirect પછી બતાવાતી એક વારની જાણ માટે એ ઉત્તમ બને છે (post-redirect-get ઢબ): 'Registration successful!' message ખાતરીના page પર એક વાર દેખાય છે અને user refresh કરે તો ફરી દેખાતો નથી. વિકલ્પ A કાયમી સંગ્રહનું વર્ણન છે (database કે Model), જે flashdata ના એક વારના સ્વભાવથી ઊલટું છે. વિકલ્પ C એને cookies સાથે ગૂંચવે છે (flashdata એ server બાજુનો session નો data છે). વિકલ્પ D એ સાવ અલગ ટેકનોલોજી પરનો શબ્દરમત છે. યાદ રાખો: flashdata એટલે ફક્ત એક request પૂરતો session નો message.
Think first
પહેલાં redirect, પછી flash શા માટે?
સફળ registration પછી controller એ જ page પર સીધું 'Success!' છાપવાને બદલે redirect કરીને flash message કેમ ગોઠવે છે? વિચારીને પછી tap કરો.
Show the answer
કારણ છે post-redirect-get ઢબ, જે બેવડા submit ની સમસ્યા ઉકેલે છે. POST ની પ્રક્રિયા પછી તમે સીધું 'Success!' છાપો અને પછી user refresh કરે, તો browser form ફરીથી submit કરે છે અને એની બે વાર નોંધણી થઈ જાય છે. સફળ POST પછી ખાતરીના page પર (GET request થી) redirect કરવાથી refresh કરવાથી ફક્ત નિર્દોષ ખાતરીનું page જ ફરી load થાય છે, submit નહીં. Flashdata 'Registration successful!' message ને એ એક redirect પાર લઈ જાય છે અને પછી ગાયબ થઈ જાય છે, એટલે એ બરાબર એક જ વાર દેખાય છે. એટલે પહેલાં redirect અને પછી flash એ સ્વચ્છ, refresh સામે સલામત ખાતરી આપે છે: નાની ઢબ જે ખરી અને સામાન્ય ભૂલ અટકાવે છે, અને એટલે જ frameworks એમાં flashdata અંદરથી જ આપે છે.
Watch out
CI નાં મુખ્ય features ના ફાંદા
CI જે આપે છે તે જાતે લખવું: validation ની library, session અને upload નાં tools ફરી લખવાને બદલે એ જ વાપરો.
Helpers અને libraries ગૂંચવવાં: helpers એ functions ના સંગ્રહ છે; libraries એ classes છે.
Flashdata ટકશે એવી અપેક્ષા: એ રચના પ્રમાણે જ ફક્ત એક request સુધી ટકે છે.
Redirect વગર સફળતા છાપવી: એથી refresh વખતે બેવડું submit થાય છે; redirect અને flash વાપરો.
વાપરતાં પહેલાં helper load ન કરવું: પહેલાં helper કે library load કરો, નહીં તો એનાં functions મળતાં નથી.
Theory
Unit 1 થી 3 પૂરાં: ખરી PHP application
તમે event portal ને hello.php થી માંડીને માળખાબદ્ધ, database પર ચાલતી, framework માં ગોઠવાયેલી application સુધી પહોંચાડ્યું છે: Core PHP, આગળનાં features, injection સામે સલામત queries વાળું MySQL, AJAX, અને એનાં શક્તિશાળી tools સાથેનું CodeIgniter નું MVC. એ જ છે server બાજુનું web development, છેડેથી છેડા સુધી. Unit 4 પ્રકારે જ જુદું છે: ભારતીય જ્ઞાનપરંપરાનો ખગોળનો વિષય (સૂર્યસિદ્ધાંત અને વરાહમિહિર), જેને હકીકતના આધારે અને આદરપૂર્વક ભણવાનો છે. Web ની app પૂરી થઈ; IKS નું unit પોતાના પગ પર ઊભું છે.
Summary
Key takeaways
- Framework ચકાસાયેલાં, ફરી વાપરી શકાય એવાં tools આપે છે જેથી તમે નળીકામ હાથે ઘડવાને બદલે સગવડો ગોઠવો.
- CI ની validation ની library જાહેર કરેલા નિયમો (required, valid_email, min_length) એક જ call માં તપાસે છે અને આપોઆપ ભૂલના messages બનાવે છે.
- Flashdata એવો session નો data છે જે બરાબર એક જ પછીના request સુધી ટકે છે અને પછી જાતે ભૂંસાય છે: redirect પછીના એક વારના messages માટે આદર્શ.
- પહેલાં redirect અને પછી flash (post-redirect-get) refresh વખતે બેવડું submit અટકાવે છે.
- CI નું upload નું સંચાલન files ને ચકાસે છે અને સલામત રીતે ખસેડે છે, અને એમ કાચા $_FILES વાળા કામને વીંટી લે છે.
- Helpers એ functions ના સંગ્રહ છે; libraries એ સગવડો આપતા classes છે; તમને જે જોઈએ તે load કરો.
- યાદ રાખવાની કડી: નળીકામ framework ને કરવા દો; flashdata એક વાર દેખાય છે અને ગાયબ થાય છે.