ഒരു PHP അഭിമുഖത്തിന് തയ്യാറെടുക്കുന്നു: കീവേഡ് “സ്റ്റാറ്റിക്. സ്റ്റാറ്റിക് വേരിയബിളുകളുടെ അപകടങ്ങൾ

08/07/2016 18:37 അതിഥി: ബാഷിബുസുക് അലക്സാണ്ടർ

ലളിതമായി അത്ഭുതകരമായ!
പ്ലോട്ടുകൾ, കഥാപാത്രങ്ങൾ, സംഭാഷണങ്ങൾ...
എല്ലാം വളച്ചൊടിക്കാതെ സ്യൂട്ടിലും നിറത്തിലും.
വളരെ നന്നായി എഴുതിയിരിക്കുന്നു. സൾഫർ-ഫാൾ പിണ്ഡത്തിൻ്റെ പശ്ചാത്തലത്തിൽ ഇത് കുത്തനെ നിൽക്കുന്നു.
എല്ലായ്പ്പോഴും കൃത്യമായ വിവരണങ്ങളില്ലാത്ത തരങ്ങളുടെയും ആയുധങ്ങളുടെയും ഓവർലോഡ് മാത്രമാണ് ഒരേയൊരു കാര്യം, എന്നാൽ ഇത് വളരെ അപൂർവമാണ്.
എനിക്ക് ഗൌരവമായി താങ്ങാനാവുന്ന ഒരേയൊരു ഹെയർപിൻ "തെറ്റായ ഭാഗത്ത് നിന്നുള്ള പ്രവേശനം" - കാരക്കൽ ബറ്റാലിയൻ (മരുഭൂമി പൂച്ച) IDF - മരുഭൂമിയിലെ പ്രവർത്തനങ്ങൾക്കായി ഒരു മിശ്രിത (പുരുഷന്മാർക്കും സ്ത്രീകൾക്കും) പ്രത്യേക യൂണിറ്റ്, ഗോലാനി ബ്രിഗേഡുമായി പൊതുവായി ഒന്നുമില്ല. (ലാൻഡിംഗ്) . ബാക്കിയുള്ളവയെ സംബന്ധിച്ചിടത്തോളം, എല്ലാം തികച്ചും ശരിയാണ്.
പുസ്തകങ്ങൾക്ക് വളരെ നന്ദി
ഫെൽഡ്കോർനെറ്റിൻ്റെ ഒരു തുടർച്ച കാണാൻ ഞാൻ ശരിക്കും ആഗ്രഹിക്കുന്നു.
വീണ്ടും നന്ദി!!!

07/10/2018 07:50 അതിഥി: ബാഷിബുസുക് അലക്സാണ്ടർ

V.I.P.: ഒരു കാലത്ത് ഞാൻ ബാഷിബാസുക്കിൻ്റെ മുഴുവൻ വായിച്ചു. ഓമനപ്പേര് കാണിക്കുന്നതും മണ്ടത്തരവുമാണെങ്കിലും, ആരൊക്കെ എന്ത് പറഞ്ഞാലും എല്ലാം വായിക്കാവുന്നതാണ്. എന്തായാലും, ഞാൻ വായിച്ചതിൽ പ്രത്യേകിച്ച് അസംബന്ധങ്ങളൊന്നും ഞാൻ ശ്രദ്ധിച്ചില്ല. ആ മനുഷ്യനെ ഓർത്ത് ഞാൻ സന്തോഷിച്ചു. പ്രതീക്ഷയോടെ, ഞാൻ ഫ്ലിബസ്റ്റിൽ അദ്ദേഹത്തിൻ്റെ ഏറ്റവും പുതിയതും യുക്തിപരമായി മികച്ചതുമായ "പിൻവാതിൽ നിന്ന്" തുറന്നു. ലോകത്തിൽ പൂർണതയില്ലെന്ന് ഖേദത്തോടെ ഒരിക്കൽ കൂടി എനിക്ക് ബോധ്യമായി. GG NKVD (ഏതാണ്ട് GRU) യിലെ ഒരു ജീവനക്കാരനാണ്, അവൻ ഒരു അട്ടിമറിക്കാരനാണെങ്കിലും (അദ്ദേഹം എവിടെനിന്നുള്ള ഒരു പ്രധാനിയാണ് എങ്കിലും), എന്നാൽ രണ്ട് പ്രത്യേക വിദ്യാഭ്യാസത്തോടെ ഒരു സിവിലിയൻ സർവ്വകലാശാലയിൽ പോലും ആരംഭിച്ചു. പിന്നെ ഓരോ ഘട്ടത്തിലും ഈ വിലകുറഞ്ഞവ, ഒരേസമയം "ഫക്ക്", "ഫക്ക്", "ഫക്ക്", "എഡിറ്റ്", "ഫക്ക്", "ഫക്ക് യു", "ഫക്ക് യു", "ഫക്ക്", ശരി, "ആർട്ടിക് കുറുക്കൻ" പൊതുവെ നമ്മുടെ കാലത്താണ്. ഇത്തരമൊരു പ്രസംഗം എത്ര വിദ്യാഭ്യാസ ക്ലാസുകളിൽ എത്തും, എന്തുകൊണ്ടാണ് അത് അങ്ങനെയാകുന്നത്. അടുത്തതായി എന്ത് സംഭവിക്കുമെന്ന് എനിക്കറിയില്ല, പക്ഷേ വ്യക്തമായി “പോസ്‌ലിയാഗിൻ” പ്ലോട്ടിൽ നിന്ന്, അവതരണ ശൈലിയിൽ നിന്ന്, പ്രധാന കഥാപാത്രത്തിൻ്റെ വിഡ്ഢിത്തമായ ന്യായവാദങ്ങളിൽ നിന്നും നിഗമനങ്ങളിൽ നിന്നും, കാർഡ്ബോർഡ് കഥാപാത്രങ്ങളിൽ നിന്ന്, ഇതിനകം തന്നെ പ്രാകൃതത്വത്തിൻ്റെ ശ്രദ്ധേയമായ ഒരു ബോധം ഉണ്ട്. അവരുടെ നിർജീവ സംഭാഷണങ്ങളിൽ നിന്ന്, കെട്ടുകഥകൾക്ക് പോലും എന്താണ് സംഭവിക്കുന്നത് എന്ന യാഥാർത്ഥ്യത്തിൽ നിന്ന്. ഇതെല്ലാം കൂടാതെ മറ്റു പലതും നിങ്ങൾക്ക് ഓക്കാനം തോന്നുകയും വായന നിർത്താൻ നിങ്ങളെ പ്രേരിപ്പിക്കുകയും ചെയ്യുന്നു. ശരി, എനിക്ക് ഒരിക്കലും മനസ്സിലാക്കാൻ കഴിഞ്ഞില്ല, ശരി, ഞാൻ "അക്ഷയമായത്" ചിതറിച്ചു, അത് വായിച്ചു (അല്ലെങ്കിൽ അത് വായിച്ചില്ലേ?), ഇത് ശരിക്കും എൻ്റെ കണ്ണുകളെ വേദനിപ്പിക്കുന്നില്ലേ? എല്ലാത്തിനുമുപരി, "ഫക്ക്" എന്ന വാക്കിലൂടെ ഇവയെല്ലാം വലിച്ചെറിയുക (അതുകൊണ്ടാണ്, വ്യക്തിത്വത്തെ ഊന്നിപ്പറയാൻ, അത് എന്തിനുവേണ്ടിയാണ്, അല്ലെങ്കിൽ ഒരുപക്ഷെ തണുപ്പ്, എന്ത്?) കൂടാതെ ഒരു ലളിതമായ വാചകം പോലും തികച്ചും വ്യത്യസ്തമായിരിക്കും. അത് മുറിച്ചില്ലെങ്കിൽ, എനിക്കറിയില്ല, ഒരുപക്ഷേ മറ്റൊരാൾ അത് എഴുതിയിരിക്കാം. അവനെ ഡിസ്ചാർജ് ചെയ്താൽ, സാഹിത്യ പീഡനത്തിൽ നിർത്തി മണ്ടത്തരമായ പ്രാകൃതതയെ പീഡിപ്പിക്കുന്നത് നിർത്തുന്നതാണ് നല്ലത്.

07/23/2018 13:22 അതിഥി: ബാഷിബുസുക് അലക്സാണ്ടർ

V.I.P.: ശരി, "വേശ്യ" എന്നതിനു പുറമേ (ഒരുപക്ഷേ ഇപ്പോഴും ലളിതവും ശാന്തനുമായ വ്യക്തി), ബുഷിൻ്റെ മണ്ടൻ "നിങ്ങൾക്കറിയാം", അതിലും മണ്ടത്തരം "അതെ" പ്രത്യക്ഷപ്പെട്ടു. ഒരു വാക്കിൽ, ഒരു പൂർണ്ണമായ സെറ്റ്. എന്നിട്ടും, എല്ലാവരും "വലിയ മനുഷ്യനോടൊപ്പം" ആയിരിക്കാനും ഒരേസമയം നിരവധി സ്ത്രീകൾ ആഗ്രഹിക്കുന്നുവെന്നും എനിക്ക് മനസ്സിലാക്കാൻ കഴിയും, കുറഞ്ഞത് അവരുടെ സ്വന്തം "സൃഷ്ടിയിൽ" എങ്കിലും, അത് തികച്ചും പ്രാകൃതവും കോപ്പിയടിയും ആണെങ്കിൽ, കുറഞ്ഞത് അവൻ പുതിയ എന്തെങ്കിലും കൊണ്ടുവരും. രണ്ടാമത്തേതുമായുള്ള ബന്ധം, നിങ്ങൾ കണ്ട അശ്ലീലത്തിലേക്കോ മറ്റെന്തെങ്കിലുമോ അവൻ ആകർഷിക്കും. ഒറിജിനാലിറ്റി എവിടെ നിന്നാണ് വരുന്നതെങ്കിലും, ഇതെല്ലാം ഒരേ സാഹചര്യത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്.

അപേക്ഷ

യൂറോപ്യൻ രാജ്യങ്ങൾക്കെതിരായ യുദ്ധങ്ങളിൽ ബാഷിബസൂക്കിസാധാരണഗതിയിൽ പൂർണ്ണമായും അനുവദനീയമല്ല. അവരെ സംഘടിപ്പിക്കാനും അച്ചടക്കമുണ്ടാക്കാനും അസാധ്യമായിരുന്നു, ഇത് ഏറ്റെടുത്ത വിദേശ ജനറൽമാരുടെ (ഫ്രഞ്ച് ജനറൽ യൂസഫ്, ഇംഗ്ലീഷ് ബീറ്റ്സൺ) ശ്രമങ്ങൾ പോലും ഈ ദിശയിൽ സഹായിച്ചില്ല. രാജ്യത്തെ അവരുടെ കൊള്ളയും സിവിലിയന്മാരോട് സങ്കൽപ്പിക്കാനാവാത്ത ക്രൂരതകളും അക്രമങ്ങളും അവസാനിപ്പിക്കാൻ, തുർക്കി സാധാരണ സൈനികർ ഒന്നിലധികം തവണ നിരായുധരാകാൻ നിർബന്ധിതരായി. bashi-bazouks. ബൾഗേറിയയിലെ ഏപ്രിൽ പ്രക്ഷോഭത്തെ അടിച്ചമർത്തുന്നതിനിടയിലും 1877-1878 ലെ അവസാന റഷ്യൻ-തുർക്കി യുദ്ധസമയത്തും അവർ തങ്ങളുടെ കൊള്ളയടിക്കുന്ന പ്രവണതകൾ പൂർണ്ണമായി പ്രകടിപ്പിച്ചു.

പ്രശസ്തി

പേര് bashi-bazouksക്രൂരതയിൽ ഏറ്റവും ക്രൂരമായ അക്രമത്തിന് കഴിവുള്ള ഒരു വ്യക്തിയെ വിവരിക്കുന്നതിനുള്ള ഒരു വീട്ടുവാക്കായി മാറിയിരിക്കുന്നു. ശിക്ഷാനടപടികൾ bashi-bazouksഡോക്യുമെൻ്ററി മെറ്റീരിയലിനെ അടിസ്ഥാനമാക്കി "യുദ്ധം, പുരോഗതി, ലോകചരിത്രത്തിൻ്റെ അവസാനം എന്നിവയെക്കുറിച്ചുള്ള മൂന്ന് സംഭാഷണങ്ങൾ" എന്ന ലേഖനത്തിൽ റഷ്യൻ തത്ത്വചിന്തകനായ വി.എസ്.

ഇതും കാണുക

  • പിണ്ഡാരി- ഇന്ത്യയിൽ
  • സെർഡ്യൂക്കി - ഉക്രെയ്നിൽ

"Bashi-bazouki" എന്ന ലേഖനത്തെക്കുറിച്ച് ഒരു അവലോകനം എഴുതുക

കുറിപ്പുകൾ

സാഹിത്യം

  • // മിലിട്ടറി എൻസൈക്ലോപീഡിയ: [18 വാല്യങ്ങളിൽ] / എഡി. വി.എഫ്. നോവിറ്റ്സ്കിയും [മറ്റുള്ളവരും]. - സെൻ്റ് പീറ്റേഴ്സ്ബർഗ്.
  • ; [എം.]: തരം.

t-va I.V Sytin, 1911-1915.

  • // ബ്രോക്ക്ഹോസിൻ്റെയും എഫ്രോണിൻ്റെയും എൻസൈക്ലോപീഡിക് നിഘണ്ടു: 86 വാല്യങ്ങളിൽ (82 വാല്യങ്ങളും 4 അധികവും). - സെൻ്റ് പീറ്റേഴ്സ്ബർഗ്. , 1890-1907. ലിങ്കുകൾമോണ്ട്ഗോമറി, വിസ്കൗണ്ട് ബെർണാഡ് (1968).

എ ഹിസ്റ്ററി ഓഫ് വാർഫെയർ

, ദി വേൾഡ് പബ്ലിഷിംഗ് കമ്പനി. ISBN 978-0-688-01645-6.
ബാഷിബാസുക്കിയെ ചിത്രീകരിക്കുന്ന ഉദ്ധരണി
ഖമോവ്‌നിക്കിയുടെ പാതകളിലൂടെ, തടവുകാർ അവരുടെ വാഹനവ്യൂഹവും കാവൽക്കാരുടെ ഉടമസ്ഥതയിലുള്ള വണ്ടികളും വാഗണുകളുമായി ഒറ്റയ്ക്ക് നടന്നു, അവർക്ക് പിന്നിൽ ഓടിച്ചുകൊണ്ടിരുന്നു; പക്ഷേ, സപ്ലൈ സ്റ്റോറുകളിലേക്ക് പോകുമ്പോൾ, സ്വകാര്യ വണ്ടികൾ ഇടകലർന്ന ഒരു വലിയ പീരങ്കി വാഹനവ്യൂഹത്തിന് നടുവിലാണ് അവർ കണ്ടെത്തിയത്.
ക്രിമിയൻ ഫോർഡ് കടന്ന്, തടവുകാർ ഒരു സമയം കുറച്ച് ചുവടുകൾ നീക്കി നിർത്തി, വീണ്ടും നീങ്ങി, എല്ലാ വശങ്ങളിലും ജോലിക്കാരും ആളുകളും കൂടുതൽ കൂടുതൽ ലജ്ജിച്ചു. കാലുഷ്‌സ്കയ സ്ട്രീറ്റിൽ നിന്ന് പാലത്തെ വേർതിരിക്കുന്ന നൂറുകണക്കിന് പടികൾ ഒരു മണിക്കൂറിലധികം നടന്ന്, സമോസ്ക്വോറെറ്റ്സ്കി തെരുവുകൾ കലുഷ്സ്കായയെ കണ്ടുമുട്ടുന്ന സ്ക്വയറിലെത്തിയ ശേഷം, തടവുകാർ ഒരു കൂമ്പാരത്തിലേക്ക് ഞെക്കി, മണിക്കൂറുകളോളം ഈ കവലയിൽ നിർത്തി. എല്ലാ വശത്തുനിന്നും ചക്രങ്ങളുടെ നിലക്കാത്ത ഗർജ്ജനവും, കാലുകളുടെ ചവിട്ടുപടിയും, നിലക്കാത്ത കോപാകുലമായ നിലവിളികളും ശാപങ്ങളും കടലിൻ്റെ ശബ്ദം പോലെ കേൾക്കാമായിരുന്നു. തൻ്റെ ഭാവനയിൽ ഒരു ഡ്രമ്മിൻ്റെ ശബ്ദത്തിൽ ലയിച്ച ഈ ശബ്ദം കേട്ട് പിയറി കത്തിയ വീടിൻ്റെ ചുമരിൽ അമർത്തി നിന്നു.
പിടിക്കപ്പെട്ട നിരവധി ഉദ്യോഗസ്ഥർ, മികച്ച കാഴ്ച ലഭിക്കുന്നതിന്, പിയറി നിന്നിരുന്ന കത്തിയ വീടിൻ്റെ മതിലിലേക്ക് കയറി.
- ജനങ്ങളോട്! ഏകാ ജനം!.. അവർ തോക്കുകൾ കൂട്ടിയിട്ടു! നോക്കൂ: രോമങ്ങൾ ... - അവർ പറഞ്ഞു. "നോക്കൂ, തെണ്ടികളേ, അവർ എന്നെ കൊള്ളയടിച്ചു... അത് അവൻ്റെ പുറകിൽ, ഒരു വണ്ടിയിൽ... എല്ലാത്തിനുമുപരി, ഇത് ഒരു ഐക്കണിൽ നിന്നാണ്, ദൈവത്താൽ!.. ഇവർ ജർമ്മനികളായിരിക്കണം." നമ്മുടെ മനുഷ്യൻ, ദൈവത്താൽ!.. അയ്യോ, തെമ്മാടികളേ! ഇതാ അവർ വരുന്നു, ഡ്രോഷ്കി - അവർ അത് പിടിച്ചെടുത്തു!.. നോക്കൂ, അവൻ നെഞ്ചിൽ ഇരുന്നു. പിതാക്കന്മാരേ!.. ഞങ്ങൾ തമ്മിൽ വഴക്കായി!..
- അതിനാൽ അവൻ്റെ മുഖത്ത്, മുഖത്ത് അടിക്കുക! വൈകുന്നേരം വരെ നിങ്ങൾക്ക് കാത്തിരിക്കാനാവില്ല. നോക്കൂ, നോക്കൂ... ഇത് ഒരുപക്ഷേ നെപ്പോളിയൻ തന്നെയായിരിക്കും. നോക്കൂ, എന്തെല്ലാം കുതിരകൾ! ഒരു കിരീടത്തോടുകൂടിയ മോണോഗ്രാമിൽ. ഇത് ഒരു മടക്കു വീടാണ്. അവൻ ബാഗ് ഉപേക്ഷിച്ചു, അത് കാണുന്നില്ല. അവർ വീണ്ടും വഴക്കിട്ടു... ഒരു കുട്ടിയുമായി ഒരു സ്ത്രീ, ഒട്ടും മോശമല്ല. അതെ, തീർച്ചയായും അവർ നിങ്ങളെ കടത്തിവിടും... നോക്കൂ, അവസാനമില്ല. റഷ്യൻ പെൺകുട്ടികൾ, ദൈവത്താൽ, പെൺകുട്ടികൾ! അവർ സ്‌ട്രോളറുകളിൽ വളരെ സുഖകരമാണ്!
വീണ്ടും, പൊതു ജിജ്ഞാസയുടെ ഒരു തരംഗം, ഖമോവ്നിക്കിയിലെ പള്ളിക്ക് സമീപം, എല്ലാ തടവുകാരെയും റോഡിലേക്ക് തള്ളിവിട്ടു, പിയറി, അവൻ്റെ ഉയരത്തിന് നന്ദി, തടവുകാരുടെ ജിജ്ഞാസയെ ആകർഷിച്ചത് മറ്റുള്ളവരുടെ തലയിൽ കണ്ടു. മൂന്ന് സ്‌ട്രോളറുകളിൽ, ചാർജിംഗ് ബോക്‌സുകൾക്കിടയിൽ ഇടകലർന്ന, സ്ത്രീകൾ ഓടിച്ചു, പരസ്പരം അടുത്ത് ഇരുന്നു, വസ്ത്രം ധരിച്ച്, തിളങ്ങുന്ന നിറങ്ങളിൽ, പരുക്കൻ സ്വരത്തിൽ എന്തൊക്കെയോ വിളിച്ചുപറഞ്ഞു.

നിലവിലുള്ള മിക്ക PHP 5 കോഡുകളും മാറ്റങ്ങളില്ലാതെ പ്രവർത്തിക്കുന്നുണ്ടെങ്കിലും, ഇനിപ്പറയുന്ന പിന്നോക്ക അനുയോജ്യമല്ലാത്ത മാറ്റങ്ങൾ നിങ്ങൾ ശ്രദ്ധിക്കണം:

  • getrusage()മടങ്ങുന്നു NULL PHP 5.2.1 പോലെ പൊരുത്തപ്പെടാത്ത ആർഗ്യുമെൻ്റുകൾ പാസാക്കുമ്പോൾ.
  • ZipArchive::setCommentName()മടങ്ങുന്നു സത്യം PHP 5.2.1-ൻ്റെ വിജയത്തിൽ.
  • ZipArchive::setCommentIndex()മടങ്ങുന്നു സത്യം PHP 5.2.1-ൻ്റെ വിജയത്തിൽ.
  • SplFileObject::getFilename() PHP 5.2.1-ലെ ആപേക്ഷിക/പാത്ത്/ടു/ഫയലല്ല, ഫയലിൻ്റെ പേര് നൽകുന്നു.
  • Win32-ൽ PHPRC എൻവയോൺമെൻ്റ് വേരിയബിളിൻ്റെ മുൻഗണന മാറ്റി വിൻഡോസ് രജിസ്ട്രിയിൽ സംഭരിച്ചിരിക്കുന്ന പാതയെക്കാൾ PHPRC എൻവയോൺമെൻ്റ് വേരിയബിൾ ഇപ്പോൾ മുൻഗണന നൽകുന്നു.
  • CLI SAPI മേലിൽ php.ini അല്ലെങ്കിൽ php-cli.ini ഫയലിനായി cwd പരിശോധിക്കില്ല PHP 5.1.x-ൽ ഒരു രേഖപ്പെടുത്താത്ത ഫീച്ചർ ചേർത്തിരിക്കുന്നു, അത് ഒരു PHP കോൺഫിഗറേഷൻ ഫയലിനായി CLI ബൈനറി നിലവിലെ വർക്കിംഗ് ഡയറക്ടറി പരിശോധിക്കുന്നു, ഇത് അപ്രതീക്ഷിതമായ ഒരു കോൺഫിഗറേഷൻ ഫയൽ വായിച്ചാൽ പ്രവചനാതീതമായ സ്വഭാവത്തിലേക്ക് നയിച്ചേക്കാം. ഈ പ്രവർത്തനം 5.2.0-ൽ നീക്കം ചെയ്‌തു, കൂടാതെ php.ini അല്ലെങ്കിൽ php-cli.ini ഫയലുകളുടെ സാന്നിധ്യത്തിനായി PHP ഇനി CWD-യിൽ തിരയുകയില്ല.
  • മാനുവലിൻ്റെ കമാൻഡ് ലൈൻ വിഭാഗവും കാണുക. മോഡുലസ് 0 പ്രവർത്തനങ്ങൾ നടത്തുമ്പോൾ ഒരു മുന്നറിയിപ്പ് ചേർത്തു PHP-യുടെ മുൻ പതിപ്പുകളിൽ, പൂർണ്ണസംഖ്യ % 0 നടപ്പിലാക്കുന്നത് മുന്നറിയിപ്പ് സന്ദേശങ്ങളൊന്നും പുറപ്പെടുവിച്ചില്ല, പകരം ഒരു അപ്രതീക്ഷിത റിട്ടേൺ മൂല്യം നൽകുന്നുതെറ്റ് . PHP 5.2.0 മുതൽ, ഈ പ്രവർത്തനം ഒരു പുറപ്പെടുവിക്കും

    E_WARNING
    , പൂജ്യം കൊണ്ട് വിഭജനം നടത്തുന്ന മറ്റെല്ലാ സന്ദർഭങ്ങളിലും സംഭവിക്കുന്നത് പോലെ.
    ?>

  • പ്രിൻ്റ് 10% 0 ; /* മുന്നറിയിപ്പ്: n വരിയിൽ ഫയൽ നാമത്തിൽ പൂജ്യം കൊണ്ട് വിഭജിക്കുക */ __toString() എന്നത് ബാധകമാകുന്നിടത്തെല്ലാം വിളിക്കാൻ മാറ്റി.

    മാജിക് രീതി __toString() ഇപ്പോൾ ഒരു സ്ട്രിംഗ് സന്ദർഭത്തിൽ വിളിക്കും, അതായത്, ഒരു വസ്തുവിനെ സ്ട്രിംഗ് ആയി ഉപയോഗിക്കുന്ന എവിടെയും.
    ഒബ്‌ജക്റ്റ് ഐഡൻ്റിഫയർ അടങ്ങുന്ന ഒരു സ്‌ട്രിംഗ് തിരികെ നൽകുന്നതിൻ്റെ ഫാൾബാക്ക് PHP 5.2.0-ൽ ഉപേക്ഷിച്ചു. ഒരു ഒബ്ജക്റ്റ് ഐഡൻ്റിഫയർ അദ്വിതീയമായി കണക്കാക്കാൻ കഴിയാത്തതിനാൽ ഇത് പ്രശ്നമായി. റിട്ടേൺ മൂല്യമായി നിങ്ങൾ ഒബ്‌ജക്റ്റ് ഐഡൻ്റിഫയറിനെ ആശ്രയിച്ചിട്ടുണ്ടെങ്കിൽ നിങ്ങളുടെ ആപ്ലിക്കേഷനിൽ പിഴവുണ്ടെന്ന് ഈ മാറ്റം അർത്ഥമാക്കും. ആ മൂല്യം ഒരു സ്ട്രിംഗായി ഉപയോഗിക്കാനുള്ള ശ്രമം ഇപ്പോൾ ഒരു മാരകമായ പിശകിന് കാരണമാകും.
    ക്ലാസ് ഫൂ()
    $foo = പുതിയ foo ;
    $foo അച്ചടിക്കുക;
    ?>

    /* ക്യാച്ച് ചെയ്യാവുന്ന മാരകമായ പിശക്: ഒബ്ജക്റ്റ് ഓഫ് ക്ലാസ് foo n */ എന്ന വരിയിലെ ഫയലിൻ്റെ പേരിൽ സ്ട്രിംഗിലേക്ക് പരിവർത്തനം ചെയ്യരുത്. __toString() ഉപയോഗിച്ച് പോലും, ഒബ്‌ജക്റ്റുകൾ അറേ സൂചികകളായോ കീകളായോ ഉപയോഗിക്കാൻ കഴിയില്ല. പിന്നീടുള്ള തീയതിയിൽ ഞങ്ങൾ ഇതിനായി ബിൽറ്റ്-ഇൻ ഹാഷ് പിന്തുണ ചേർത്തേക്കാം, എന്നാൽ PHP 5.2.x-ൽ നിങ്ങളുടേതായ ഹാഷിംഗ് നൽകണം അല്ലെങ്കിൽ പുതിയ SPL ഫംഗ്ഷൻ ഉപയോഗിക്കേണ്ടതുണ്ട്.

    spl_object_hash()
    __toString() രീതികളിൽ നിന്ന് ഒഴിവാക്കലുകൾ എറിയാൻ കഴിയില്ല.
    ക്ലാസ് ഫൂ (
    }
    }

    പൊതു പ്രവർത്തനം __toString() (
    പുതിയ ഒഴിവാക്കൽ എറിയുക;
    ശ്രമിക്കുക (
    പുതിയ foo അച്ചടിക്കുക;
    /* മാരകമായ പിശക്: രീതി foo::__toString() നിർബന്ധമാണ്
    ?>

  • n */ എന്ന വരിയിൽ ഫയൽ നാമത്തിൽ ഒരു അപവാദം ഇടരുത് ) പിടിക്കുക (ഒഴിവാക്കൽ $e ) ()

    അബ്സ്ട്രാക്റ്റ് സ്റ്റാറ്റിക് ക്ലാസ് ഫംഗ്ഷനുകൾ ഉപേക്ഷിച്ചു. {
    ഒരു മേൽനോട്ടം കാരണം, PHP 5.0.x, 5.1.x എന്നിവ ക്ലാസുകളിൽ അമൂർത്തമായ സ്റ്റാറ്റിക് ഫംഗ്ഷനുകൾ അനുവദിച്ചു. PHP 5.2.x പോലെ, ഇൻ്റർഫേസുകൾക്ക് മാത്രമേ അവ ഉണ്ടാകൂ.
    abstract class foo
    അമൂർത്തമായ സ്റ്റാറ്റിക് ഫംഗ്ഷൻ
    ബാർ ();
    }
    ?>

  • /* കർശനമായ മാനദണ്ഡങ്ങൾ: സ്റ്റാറ്റിക് ഫംഗ്ഷൻ foo::bar()
  • n */ എന്ന വരിയിൽ ഫയൽ നാമത്തിൽ അമൂർത്തമായിരിക്കരുത് ഒറാക്കിൾ വിപുലീകരണത്തിന് വിൻഡോസിൽ ഒറാക്കിൾ 10 എങ്കിലും ആവശ്യമാണ്. RFC2397 ചേർത്തു ( "ഡാറ്റ" URL സ്കീമിൻ്റെ ആമുഖം Windows-ന് കീഴിലുള്ള പെരുമാറ്റത്തിൽ ഒരു മാറ്റത്തിന് കാരണമാകും. നിങ്ങൾ ഒരു NTFS ഫയൽ സിസ്റ്റത്തിൽ പ്രവർത്തിക്കുകയും നിങ്ങളുടെ ആപ്ലിക്കേഷനിൽ മെറ്റാ സ്ട്രീമുകൾ ഉപയോഗിക്കുകയും ചെയ്യുന്നുവെങ്കിൽ, കൂടാതെ "ഡാറ്റ:" എന്ന പേരിലുള്ള ഒരു ഫയൽ നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ, അത് പാത്ത് വിവരങ്ങളില്ലാതെ ആക്സസ് ചെയ്യപ്പെടുകയാണെങ്കിൽ - അത് പ്രവർത്തിക്കില്ല. കൂടുതൽ അത് ആക്സസ് ചെയ്യുമ്പോൾ "ഫയൽ:" പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുക എന്നതാണ്. ഇതും കാണുക » RFC 2397

    /* allow_url_include ഓഫായിരിക്കുമ്പോൾ (സ്ഥിരസ്ഥിതി) */
    ഉൾപ്പെടുന്നു "data:;base64,PD9waHAgcGhwaW5mbygpOz8+";
    /* മുന്നറിയിപ്പ്: ഉൾപ്പെടുത്തുക(): URL ഫയൽ ആക്സസ് അപ്രാപ്തമാക്കി
    സെർവർ കോൺഫിഗറേഷനിൽ ഫയൽനാമത്തിൽ n */
    ?>

  • റിഗ്രഷൻ ഇൻ ഗ്ലോബ് ()പാറ്റേണുകൾ പതിപ്പ് 5.2.4-ൽ "/foo/*/bar/*" എന്ന ഫോമിൻ്റെ പാറ്റേണുകൾക്ക് ഒരു സുരക്ഷാ ഫിക്സ് റിഗ്രഷൻ കാരണമായി. ഒരു മുന്നറിയിപ്പ് ഉയർത്തുന്നതിനുപകരം പതിപ്പ് 5.2.5 മുതൽ ഗ്ലോബ് ()പ്രവർത്തനം തിരികെ വരും PHP-യുടെ മുൻ പതിപ്പുകളിൽ, പൂർണ്ണസംഖ്യ % 0 നടപ്പിലാക്കുന്നത് മുന്നറിയിപ്പ് സന്ദേശങ്ങളൊന്നും പുറപ്പെടുവിച്ചില്ല, പകരം ഒരു അപ്രതീക്ഷിത റിട്ടേൺ മൂല്യം നൽകുന്നുഎപ്പോൾ openbase_dirനിയന്ത്രണങ്ങൾ ലംഘിക്കപ്പെടുന്നു.
  • ട്യൂട്ടോറിയൽ

ഇൻ്റർവ്യൂ സമയത്ത് ആളുകൾ തന്ത്രപരമായ ചോദ്യങ്ങൾ ചോദിക്കാൻ ഇഷ്ടപ്പെടുന്നുവെന്നത് രഹസ്യമല്ല. എല്ലായ്പ്പോഴും പര്യാപ്തമല്ല, എല്ലായ്പ്പോഴും യാഥാർത്ഥ്യവുമായി ബന്ധമില്ല, പക്ഷേ വസ്തുത ഒരു വസ്തുതയായി തുടരുന്നു - അവർ ചോദിക്കുന്നു. തീർച്ചയായും, ചോദ്യം വ്യത്യസ്തമാണ്, ചിലപ്പോൾ ഒറ്റനോട്ടത്തിൽ നിങ്ങൾക്ക് മണ്ടത്തരമായി തോന്നുന്ന ഒരു ചോദ്യം യഥാർത്ഥത്തിൽ നിങ്ങൾ എഴുതുന്ന ഭാഷ നിങ്ങൾക്ക് എത്രത്തോളം നന്നായി അറിയാമെന്ന് പരിശോധിക്കാൻ ലക്ഷ്യമിടുന്നു.

ഈ ചോദ്യങ്ങളിൽ ഒന്ന് "കഷണങ്ങളായി" വേർതിരിച്ചെടുക്കാൻ ശ്രമിക്കാം - PHP-യിൽ "സ്റ്റാറ്റിക്" എന്ന പദം എന്താണ് അർത്ഥമാക്കുന്നത്, എന്തുകൊണ്ടാണ് ഇത് ഉപയോഗിക്കുന്നത്?

സ്റ്റാറ്റിക് കീവേഡിന് PHP-യിൽ മൂന്ന് വ്യത്യസ്ത അർത്ഥങ്ങളുണ്ട്. അവ ഭാഷയിൽ പ്രത്യക്ഷപ്പെട്ടതുപോലെ കാലക്രമത്തിൽ നോക്കാം.

ആദ്യത്തെ മൂല്യം ഒരു സ്റ്റാറ്റിക് ലോക്കൽ വേരിയബിളാണ്

ഫംഗ്ഷൻ foo() ($a = 0; echo $a; $a = $a + 1;) foo(); // 0 foo(); // 0 foo(); // 0

PHP-യിൽ, വേരിയബിളുകൾ പ്രാദേശികമാണ്. ഇതിനർത്ഥം, ഒരു ഫംഗ്‌ഷനിൽ (രീതി) ഒരു മൂല്യം നിർവചിക്കുകയും നൽകുകയും ചെയ്‌തിരിക്കുന്ന ഒരു വേരിയബിൾ ആ ഫംഗ്‌ഷൻ (രീതി) നിർവ്വഹിക്കുമ്പോൾ മാത്രമേ നിലനിൽക്കൂ എന്നാണ്. രീതി പുറത്തുകടക്കുമ്പോൾ, ലോക്കൽ വേരിയബിൾ നശിപ്പിക്കപ്പെടും, അത് വീണ്ടും പ്രവേശിക്കുമ്പോൾ, അത് വീണ്ടും സൃഷ്ടിക്കപ്പെടുന്നു. മുകളിലെ കോഡിൽ, അത്തരമൊരു ലോക്കൽ വേരിയബിൾ $a വേരിയബിൾ ആണ് - ഇത് foo() ഫംഗ്‌ഷനിൽ മാത്രമേ നിലനിൽക്കൂ, ഓരോ തവണയും ഈ ഫംഗ്‌ഷൻ വിളിക്കപ്പെടുമ്പോൾ അത് പുതിയതായി സൃഷ്‌ടിക്കപ്പെടും. ഈ കോഡിൽ ഒരു വേരിയബിൾ വർദ്ധിപ്പിക്കുന്നത് അർത്ഥശൂന്യമാണ്, കാരണം കോഡിൻ്റെ അടുത്ത വരിയിൽ തന്നെ ഫംഗ്ഷൻ അതിൻ്റെ പ്രവർത്തനം പൂർത്തിയാക്കുകയും വേരിയബിളിൻ്റെ മൂല്യം നഷ്ടപ്പെടുകയും ചെയ്യും. നമ്മൾ foo() ഫംഗ്‌ഷനെ എത്ര തവണ വിളിച്ചാലും അത് എപ്പോഴും 0 ഔട്ട്‌പുട്ട് ചെയ്യും...

എന്നിരുന്നാലും, അസൈൻമെൻ്റിന് മുമ്പ് സ്റ്റാറ്റിക് കീവേഡ് ഇടുകയാണെങ്കിൽ എല്ലാം മാറുന്നു:

ഫംഗ്ഷൻ foo() ( സ്റ്റാറ്റിക് $a = 0; echo $a; $a = $a + 1; ) foo(); // 0 foo(); // 1 foo(); // 2

ഒരു ലോക്കൽ വേരിയബിളിന് ഒരു മൂല്യം നൽകുന്നതിന് മുമ്പ് എഴുതിയ സ്റ്റാറ്റിക് കീവേഡിന് ഇനിപ്പറയുന്ന ഇഫക്റ്റുകൾ ഉണ്ട്:

  1. ഫംഗ്‌ഷനിലേക്കുള്ള ആദ്യ കോളിൽ, അസൈൻമെൻ്റ് ഒരു തവണ മാത്രമേ നടത്തൂ
  2. ഈ രീതിയിൽ അടയാളപ്പെടുത്തിയ ഒരു വേരിയബിളിൻ്റെ മൂല്യം ഫംഗ്ഷൻ അവസാനിച്ചതിന് ശേഷം സംരക്ഷിക്കപ്പെടും.
  3. ഫംഗ്ഷനിലേക്കുള്ള തുടർന്നുള്ള കോളുകളിൽ, അസൈൻമെൻ്റിന് പകരം, വേരിയബിളിന് മുമ്പ് സംഭരിച്ച മൂല്യം ലഭിക്കുന്നു.
സ്റ്റാറ്റിക് എന്ന വാക്കിൻ്റെ ഈ ഉപയോഗത്തെ വിളിക്കുന്നു സ്റ്റാറ്റിക് ലോക്കൽ വേരിയബിൾ.
സ്റ്റാറ്റിക് വേരിയബിളുകളുടെ അപകടങ്ങൾ
തീർച്ചയായും, PHP-യിൽ എല്ലായ്പ്പോഴും എന്നപോലെ, ചില പോരായ്മകളുണ്ട്.

ഒരു സ്റ്റാറ്റിക് വേരിയബിളിന് സ്ഥിരാങ്കങ്ങൾ അല്ലെങ്കിൽ സ്ഥിരമായ പദപ്രയോഗങ്ങൾ മാത്രമേ നൽകാനാകൂ എന്നതാണ് ആദ്യത്തെ കല്ല്.കോഡ് ഇതാ:
സ്റ്റാറ്റിക് $a = ബാർ();
അനിവാര്യമായും ഒരു പാഴ്സർ പിശകിലേക്ക് നയിക്കും. ഭാഗ്യവശാൽ, പതിപ്പ് 5.6 മുതൽ, സ്ഥിരാങ്കങ്ങൾ മാത്രമല്ല, സ്ഥിരമായ എക്‌സ്‌പ്രഷനുകളും (ഉദാഹരണത്തിന്, “1+2” അല്ലെങ്കിൽ “”), അതായത്, മറ്റ് കോഡിനെ ആശ്രയിക്കാത്തതും കണക്കാക്കാൻ കഴിയുന്നതുമായ എക്സ്പ്രഷനുകൾ നൽകാനും സാധിച്ചു. സമാഹാര ഘട്ടത്തിൽ

രണ്ടാമത്തെ കല്ല് ഒരൊറ്റ പകർപ്പിൽ രീതികൾ നിലവിലുണ്ട് എന്നതാണ്.
ഇവിടെ എല്ലാം കുറച്ചുകൂടി സങ്കീർണ്ണമാണ്. സാരാംശം മനസിലാക്കാൻ, കോഡ് ഇതാ:
ക്ലാസ് എ (പബ്ലിക് ഫംഗ്‌ഷൻ foo() (സ്റ്റാറ്റിക് $x = 0; എക്കോ ++$x;) ) $a1 = പുതിയ എ; $a2 = പുതിയ എ; $a1->foo(); // 1 $a2->foo(); // 2 $a1->foo(); // 3 $a2->foo(); // 4
“വ്യത്യസ്‌ത വസ്തുക്കൾ - വ്യത്യസ്ത രീതികൾ” എന്ന അവബോധജന്യമായ പ്രതീക്ഷയ്‌ക്ക് വിരുദ്ധമായി, പിഎച്ച്‌പിയിലെ ചലനാത്മക രീതികൾ “ഗുണിക്കുന്നില്ല” എന്ന് ഈ ഉദാഹരണത്തിൽ നമുക്ക് വ്യക്തമായി കാണാം. ഈ ക്ലാസിലെ നൂറ് ഒബ്‌ജക്‌റ്റുകൾ ഉണ്ടെങ്കിലും, ഈ രീതി ഒരു സന്ദർഭത്തിൽ മാത്രമേ നിലനിൽക്കൂ;

ഇതിന് തയ്യാറാകാത്ത ഒരു ഡെവലപ്പർക്ക് ഈ സ്വഭാവം അപ്രതീക്ഷിതമാകാം, അത് പിശകുകളുടെ ഉറവിടമാകാം. ക്ലാസ് (രീതി) പാരമ്പര്യം ഒരു പുതിയ രീതി സൃഷ്ടിക്കുന്നതിലേക്ക് നയിക്കുന്നു എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്:

ക്ലാസ് എ (പബ്ലിക് ഫംഗ്‌ഷൻ foo() (സ്റ്റാറ്റിക് $x = 0; എക്കോ ++$x; ) ) ക്ലാസ് ബി വിപുലീകരിക്കുന്നത് എ ( ) $a1 = പുതിയ എ; $b1 = പുതിയ B; $a1->foo(); // 1 $b1->foo(); // 1 $a1->foo(); // 2 $b1->foo(); // 2

ഉപസംഹാരം: PHP-യിലെ ഡൈനാമിക് രീതികൾ ക്ലാസുകളുടെ പശ്ചാത്തലത്തിലാണ് നിലനിൽക്കുന്നത്, ഒബ്ജക്റ്റുകളല്ല. കൂടാതെ റൺടൈമിൽ മാത്രമാണ് "$this = current_object" എന്ന പകരക്കാരൻ സംഭവിക്കുന്നത്

രണ്ടാമത്തെ അർത്ഥം സ്റ്റാറ്റിക് പ്രോപ്പർട്ടികൾ, ക്ലാസുകളുടെ രീതികൾ എന്നിവയാണ്

PHP ഒബ്‌ജക്റ്റ് മോഡലിൽ, ഒബ്‌ജക്‌റ്റുകൾക്ക് മാത്രമല്ല - ഒരു ക്ലാസിൻ്റെ ഉദാഹരണങ്ങൾ, മാത്രമല്ല ക്ലാസിന് മൊത്തത്തിൽ ഗുണങ്ങളും രീതികളും സജ്ജമാക്കാൻ കഴിയും. ഇതിനായി സ്റ്റാറ്റിക് കീവേഡും ഉപയോഗിക്കുന്നു:

ക്ലാസ് എ (പബ്ലിക് സ്റ്റാറ്റിക് $x = "ഫൂ"; പബ്ലിക് സ്റ്റാറ്റിക് ഫംഗ്‌ഷൻ ടെസ്റ്റ്() (റിട്ടേൺ 42; ) ) എക്കോ എ::$x; // "foo" എക്കോ എ:: ടെസ്റ്റ്(); // 42
അത്തരം ഗുണങ്ങളും രീതികളും ആക്‌സസ് ചെയ്യുന്നതിന്, CLASS_NAME::$Variablename, CLASS_NAME:: Methodname() പോലെയുള്ള ഇരട്ട-കോളൺ (“പാമയിം നെകുഡോതയിം”) നിർമ്മിതികൾ ഉപയോഗിക്കുന്നു.

സ്റ്റാറ്റിക് പ്രോപ്പർട്ടികൾക്കും സ്റ്റാറ്റിക് രീതികൾക്കും അതിൻ്റേതായ സവിശേഷതകളും നിങ്ങൾ അറിഞ്ഞിരിക്കേണ്ട അപകടങ്ങളും ഉണ്ടെന്ന് പറയാതെ വയ്യ.

ആദ്യത്തെ സവിശേഷത നിസ്സാരമാണ് - $ഇത് ഇല്ല.യഥാർത്ഥത്തിൽ, ഇത് ഒരു സ്റ്റാറ്റിക് രീതിയുടെ നിർവചനത്തിൽ നിന്നാണ് ഉരുത്തിരിഞ്ഞത് - ഇത് ഒരു ക്ലാസുമായി ബന്ധപ്പെട്ടിരിക്കുന്നതിനാൽ, ഒരു വസ്തുവല്ല, ചലനാത്മക രീതികളിൽ നിലവിലെ ഒബ്ജക്റ്റിലേക്ക് വിരൽ ചൂണ്ടുന്ന $this വ്യാജ വേരിയബിൾ ലഭ്യമല്ല. ഏത് തികച്ചും യുക്തിസഹമാണ്.

എന്നിരുന്നാലും, മറ്റ് ഭാഷകളിൽ നിന്ന് വ്യത്യസ്തമായി, പാഴ്‌സിംഗ് അല്ലെങ്കിൽ കംപൈലേഷൻ ഘട്ടത്തിൽ "$ ഇത് ഒരു സ്റ്റാറ്റിക് രീതിയിലാണ് എഴുതിയിരിക്കുന്നത്" എന്ന സാഹചര്യം PHP കണ്ടെത്തുന്നില്ലെന്ന് നിങ്ങൾ അറിയേണ്ടതുണ്ട്. ഒരു സ്റ്റാറ്റിക് മെത്തേഡിനുള്ളിൽ $this ഉപയോഗിച്ച് കോഡ് എക്സിക്യൂട്ട് ചെയ്യാൻ ശ്രമിച്ചാൽ റൺടൈമിൽ മാത്രമേ ഇതുപോലുള്ള ഒരു പിശക് സംഭവിക്കൂ.

ഇതുപോലുള്ള കോഡ്:
ക്ലാസ് എ (പബ്ലിക് $ID = 42; സ്റ്റാറ്റിക് പബ്ലിക് ഫംഗ്‌ഷൻ foo() (echo $this->id; ) )
നിങ്ങൾ foo() രീതി അനുചിതമായി ഉപയോഗിക്കാൻ ശ്രമിക്കാത്തിടത്തോളം, ഒരു പിശകും ഉണ്ടാകില്ല:
$a = പുതിയ എ; $a->foo();

(ഉടൻ തന്നെ "മാരകമായ പിശക്: ഒബ്ജക്റ്റ് സന്ദർഭത്തിൽ ഇല്ലാത്തപ്പോൾ $this ഉപയോഗിക്കുന്നത്")
സ്റ്റാറ്റിക് ഒരു ആക്സിയം അല്ല എന്നതാണ് രണ്ടാമത്തെ സവിശേഷത!
ക്ലാസ് എ (സ്റ്റാറ്റിക് പബ്ലിക് ഫംഗ്ഷൻ foo() (എക്കോ 42;) ) $a = പുതിയ എ; $a->foo();

അതാണ്, അതെ. ഒരു സ്റ്റാറ്റിക് രീതി, അതിൽ കോഡിൽ $this അടങ്ങിയിട്ടില്ലെങ്കിൽ, ഒരു ഒബ്ജക്റ്റ് രീതി പോലെ ഒരു ചലനാത്മക സന്ദർഭത്തിൽ വിളിക്കാം. ഇത് PHP-യിലെ ഒരു ബഗ് അല്ല.
വിപരീതം പൂർണ്ണമായും ശരിയല്ല:
ക്ലാസ് എ (പബ്ലിക് ഫംഗ്‌ഷൻ foo() (echo 42; ) ) A::foo();

$ഇത് ഉപയോഗിക്കാത്ത ഒരു ഡൈനാമിക് രീതി ഒരു സ്റ്റാറ്റിക് സന്ദർഭത്തിൽ എക്സിക്യൂട്ട് ചെയ്യാൻ കഴിയും. എന്നിരുന്നാലും, E_STRICT ലെവലിൽ "നോൺ-സ്റ്റാറ്റിക് മെത്തേഡ് A::foo() സ്റ്റാറ്റിക്കലിയായി വിളിക്കരുത്" എന്ന മുന്നറിയിപ്പ് നിങ്ങൾക്ക് ലഭിക്കും. കോഡ് മാനദണ്ഡങ്ങൾ കർശനമായി പാലിക്കണോ അതോ മുന്നറിയിപ്പുകൾ അടിച്ചമർത്തണോ എന്ന് തീരുമാനിക്കേണ്ടത് നിങ്ങളാണ്. ആദ്യത്തേത്, തീർച്ചയായും, അഭികാമ്യമാണ്.

കൂടാതെ, മുകളിൽ എഴുതിയതെല്ലാം രീതികൾക്ക് മാത്രം ബാധകമാണ്. "->" വഴി ഒരു സ്റ്റാറ്റിക് പ്രോപ്പർട്ടി ഉപയോഗിക്കുന്നത് അസാധ്യമാണ് കൂടാതെ മാരകമായ പിശകിലേക്ക് നയിക്കുന്നു.

മൂന്നാമത്തെ അർത്ഥം, ഏറ്റവും ബുദ്ധിമുട്ടുള്ളതായി തോന്നുന്നു - വൈകി സ്റ്റാറ്റിക് ബൈൻഡിംഗ്

PHP ഭാഷയുടെ ഡെവലപ്പർമാർ "സ്റ്റാറ്റിക്" എന്ന കീവേഡിൻ്റെ രണ്ട് അർത്ഥങ്ങളിൽ നിർത്തിയില്ല, കൂടാതെ പതിപ്പ് 5.3 ൽ ഭാഷയുടെ മറ്റൊരു "സവിശേഷത" ചേർത്തു, അത് അതേ വാക്കിൽ നടപ്പിലാക്കുന്നു! ഇതിനെ "ലേറ്റ് സ്റ്റാറ്റിക് ബൈൻഡിംഗ്" അല്ലെങ്കിൽ LSB (ലേറ്റ് സ്റ്റാറ്റിക് ബൈൻഡിംഗ്) എന്ന് വിളിക്കുന്നു.

ക്ലാസ് മോഡൽ (പബ്ലിക് സ്റ്റാറ്റിക് $ടേബിൾ = "ടേബിൾ"; പൊതു സ്റ്റാറ്റിക് ഫംഗ്‌ഷൻ getTable() (സ്വയം::$table; ) echo Model::getTable(); // "മേശ"
PHP-യിലെ സ്വയം കീവേഡ് എല്ലായ്പ്പോഴും അർത്ഥമാക്കുന്നത് "ഈ വാക്ക് എഴുതിയിരിക്കുന്ന ക്ലാസിൻ്റെ പേര്" എന്നാണ്. ഈ സാഹചര്യത്തിൽ, self എന്നത് മോഡൽ ക്ലാസ്സും self::$table എന്നത് മോഡൽ::$table ഉപയോഗിച്ചും മാറ്റിസ്ഥാപിക്കുന്നു.
ഈ ഭാഷാ സവിശേഷതയെ "ആദ്യകാല സ്റ്റാറ്റിക് ബൈൻഡിംഗ്" എന്ന് വിളിക്കുന്നു. എന്തുകൊണ്ട് നേരത്തെ? കാരണം സ്വയവും ഒരു പ്രത്യേക ക്ലാസ് നാമവും ബൈൻഡുചെയ്യുന്നത് റൺടൈമിൽ സംഭവിക്കുന്നില്ല, എന്നാൽ ആദ്യ ഘട്ടങ്ങളിൽ - കോഡ് പാഴ്‌സ് ചെയ്യുകയും കംപൈൽ ചെയ്യുകയും ചെയ്യുന്നു. ശരി, “സ്റ്റാറ്റിക്” - കാരണം നമ്മൾ സംസാരിക്കുന്നത് സ്റ്റാറ്റിക് ഗുണങ്ങളെയും രീതികളെയും കുറിച്ചാണ്.

നമുക്ക് നമ്മുടെ കോഡ് അല്പം മാറ്റാം:

ക്ലാസ് മോഡൽ (പബ്ലിക് സ്റ്റാറ്റിക് $ടേബിൾ = "ടേബിൾ"; പൊതു സ്റ്റാറ്റിക് ഫംഗ്‌ഷൻ getTable() (സ്വയം തിരികെ::$table; ) ) ക്ലാസ് ഉപയോക്താവ് മോഡൽ വിപുലീകരിക്കുന്നു (പബ്ലിക് സ്റ്റാറ്റിക് $ടേബിൾ = "ഉപയോക്താക്കൾ"; ) എക്കോ യൂസർ::getTable() ; // "മേശ"

ഈ സാഹചര്യത്തിൽ PHP അവ്യക്തമായി പെരുമാറുന്നത് എന്തുകൊണ്ടാണെന്ന് ഇപ്പോൾ നിങ്ങൾ മനസ്സിലാക്കുന്നു. ഉപയോക്തൃ ക്ലാസിനെക്കുറിച്ച് ഒന്നും അറിയാത്തപ്പോൾ സ്വയം മോഡൽ ക്ലാസുമായി ബന്ധപ്പെട്ടിരുന്നു, അതിനാൽ മോഡലിലേക്ക് വിരൽ ചൂണ്ടുന്നു.

ഞാൻ എന്ത് ചെയ്യണം?

ഈ ധർമ്മസങ്കടം പരിഹരിക്കാൻ, റൺടൈം ഘട്ടത്തിൽ "വൈകി" ബൈൻഡിംഗ് സംവിധാനം കണ്ടുപിടിച്ചു. ഇത് വളരെ ലളിതമായി പ്രവർത്തിക്കുന്നു - "സ്വയം" എന്ന വാക്കിന് പകരം "സ്റ്റാറ്റിക്" എന്ന് എഴുതുക, ഈ കോഡ് എന്ന് വിളിക്കുന്ന ക്ലാസുമായി കണക്ഷൻ സ്ഥാപിക്കപ്പെടും, അല്ലാതെ അത് എഴുതിയിരിക്കുന്നതുമായിട്ടല്ല:
ക്ലാസ് മോഡൽ (പബ്ലിക് സ്റ്റാറ്റിക് $ടേബിൾ = "ടേബിൾ"; പൊതു സ്റ്റാറ്റിക് ഫംഗ്‌ഷൻ getTable() (റിട്ടേൺ സ്റ്റാറ്റിക്::$ടേബിൾ; ) ) ക്ലാസ് ഉപയോക്താവ് മോഡൽ വിപുലീകരിക്കുന്നു (പബ്ലിക് സ്റ്റാറ്റിക് $ടേബിൾ = "ഉപയോക്താക്കൾ"; ) എക്കോ യൂസർ::getTable() ; // "ഉപയോക്താക്കൾ"

ഇതാണ് നിഗൂഢമായ "ലേറ്റ് സ്റ്റാറ്റിക് ബൈൻഡിംഗ്".

കൂടുതൽ സൗകര്യാർത്ഥം, PHP-യിൽ, "സ്റ്റാറ്റിക്" എന്ന വാക്കിന് പുറമേ, get_called_class() എന്ന ഒരു പ്രത്യേക ഫംഗ്ഷനും ഉണ്ട്, നിങ്ങളുടെ കോഡ് നിലവിൽ ഏത് ക്ലാസിൻ്റെ പശ്ചാത്തലത്തിലാണ് പ്രവർത്തിക്കുന്നതെന്ന് ഇത് നിങ്ങളെ അറിയിക്കും.

സന്തോഷകരമായ അഭിമുഖങ്ങൾ!