Mipangilio Inayoweza Kubadilishwa na Admin Bila Code Ngumu
Programu zinakabiliwa na tatizo la mara kwa mara. Baadhi ya mipangilio inapaswa kuwa kwenye faili la .env. Mipangilio mingine lazima ibadilike kupitia jopo la admin bila kuhitaji kuweka (deploy) kodi mpya. Mifano ni pamoja na majina ya tovuti, saa za eneo (timezones), au mipangilio ya usajili.
Waendelezaji wengi huweka hizi kwenye kanzi data (database) lakini wanatengeneza vurugu. Unajikuta ukiwa na njia mbili za kusoma data. Sehemu moja ya programu yako inatumia config() wakati nyingine inatumia database model. Hii husababisha hitilafu (bugs) ambapo mipangilio inakuwa haijakaa sawa.
Unaweza kuepuka hili kwa kutumia njia moja ya kusoma. Chukulia kanzi data kama tabaka (layer) linaloweka juu ya config yako wakati wa boot.
Hivi ndivyo unavyoweza kuijenga:
• Tumia chanzo kimoja cha ukweli (single source of truth). Kanzi data inahifadhi thamani, lakini programu inasoma kupitia config() pekee.
• Tumia typed classes. Badala ya kutumia arrays zisizo rasmi, tumia classes zenye aina kali (strict types). Hii huzuia makosa ya kimaandishi (typos) na hitilafu zisizoonekana.
• Pakia mipangilio wakati wa mchakato wa boot. Tumia service provider kuvuta thamani za kanzi data na kuziingiza kwenye config array.
Tahadhari na mitego hii miwili ya kiufundi:
Mtego wa Timezone Laravel huweka timezone mapema katika mchakato wa boot. Ukibadilisha thamani ya config baadaye, PHP bado itatumia timezone ya zamani. Lazima uite
date_default_timezone_set()mwenyewe ili kusawazisha mipangilio ya PHP ya kimataifa na thamani yako mpya ya config.Mtego wa Installation Mpya Programu mpya haina majedwali ya kanzi data (database tables). Ikiwa mchakato wako wa boot utafeli kwa sababu jedwali la mipangilio limekosekana, programu haitaanza. Huwezi kuendesha migrations ikiwa programu imefeli kuanza (boot). Funga mantiki (logic) yako ya mipangilio kwenye try/catch block. Hii inaruhusu programu kurudi kwenye mipangilio ya awali ya .env hadi utakapokuwa umeendesha migrations zako.
Kidokezo kingine cha usalama: Unapozima kipengele kama usajili, usifiche tu kitufe kwenye UI. Ondoa kipengele hicho kabisa kwenye config. Ukiondoa kipengele kwenye config, njia (routes) zitapotea. Fomu iliyofichwa yenye endpoint inayofanya kazi ni hatari kwa usalama. Njia (route) iliyopotea hurudisha 404.
Weka kodi yako rahisi. Controllers na views zako hazipaswi kujua ikiwa mpangilio umetoka kwenye faili au kwenye kanzi data. Zinapaswa kuona config() pekee.
Chanzo: https://dev.to/nasrulhazim/admin-editable-settings-without-giving-up-config-2cj0
