You are on page 1of 1

‫" دﺧﻮل‬ ‫!

‪Laravel/lifecycle‬‬

‫دورة ﺣﻴﺎة اﻟﻄﻠﺐ )‪Request‬‬

‫‪ (Lifecycle‬ﻓﻲ ‪Laravel‬‬
‫> ‪Laravel‬‬

‫ﻣﺤﺘﻮﻳﺎت ]أﺧﻒ[‬

‫‪ 1‬ﻣﻘﺪﻣﺔ‬
‫‪ 2‬ﻧﻈﺮة ﻋﺎﻣﺔ ﻋﻦ دورة اﻟﺤﻴﺎة‬
‫‪ 2.1‬أول ﺷﻲء‬
‫‪ُ 2.2‬ﻧﻮى‪ / HTTP‬اﻟﻄﺮﻓﻴﺔ )‪HTTP / Console‬‬
‫‪(Kernels‬‬
‫‪ 2.2.1‬ﻣﻘﺪﻣﻮ اﻟﺨﺪﻣﺎت‬
‫‪ 2.2.2‬إرﺳﺎل اﻟﻄﻠﺐ )‪(Dispatch Request‬‬
‫‪ 3‬اﻟﺘﺮﻛﻴﺰ ﻋﻠﻰ ﻣﻘﺪﻣﻲ اﻟﺨﺪﻣﺎت‬
‫‪ 4‬ﻣﺼﺎدر‬

‫ﻣﻘﺪﻣﺔ‬

‫ﻋﻨﺪﻣﺎ ﺗﻔﻬﻢ ﻛﻴﻔﻴﺔ ﻋﻤﻞ أدوات ﺗﻄﻮﻳﺮك ﺗﺰداد راﺣﺘﻚ وﺛﻘﺘﻚ ﻋﻨﺪ‬
‫اﺳﺘﺨﺪاﻣﻬﺎ‪ .‬ﺗﻄﻮﻳﺮ اﻟﺘﻄﺒﻴﻘﺎت ﻻ ﻳﺸﺬ ﻋﻦ ﻫﺬه اﻟﻘﺎﻋﺪة‪.‬‬

‫اﻟﻬﺪف ﻣﻦ ﻫﺬه اﻟﺼﻔﺤﺔ ﻫﻮ ﻣﻨﺤﻚ ﻧﻈﺮة ﻋﺎﻣﺔ ﺟﻴﺪة وﻋﺎﻟﻴﺔ‬


‫اﻟﻤﺴﺘﻮى ﻋﻦ ﻛﻴﻔﻴﺔ ﻋﻤﻞ إﻃﺎر ﻋﻤﻞ ‪ .Laravel‬ﻳﺰول اﻹﺣﺴﺎس‬
‫"اﻟﺴﺤﺮي" ﻋﻦ ﻛﻞ ﺷﻲء ﻋﻨﺪﻣﺎ ﺗﺒﺪأ ﺑﺘﺤﺴﻴﻦ ﻓﻬﻤﻚ ﻟﻤﻨﺼﺔ اﻟﻌﻤﻞ‬
‫ﺑﺸﻜﻞ ﻋﺎم‪ .‬ﻻ ﺗﻴﺄس إن ﻟﻢ ﺗﻔﻬﻢ ﻛﻞ اﻟﻤﺼﻄﻠﺤﺎت ﻋﻠﻰ اﻟﻔﻮر!‬
‫ﺣﺎول ﻓﻘﻂ ﺗﻜﻮﻳﻦ ﻓﻜﺮة ﻋﺎﻣﺔ ﻋﻤﺎ ﻳﺤﺪث وﻣﻌﺮﻓﺘﻚ ﺳﺘﺰداد ﻛﻠﻤﺎ‬
‫اﻛﺘﺸﻔﺖ أﺟﺰاء ﺟﺪﻳﺪة ﻣﻦ ﻫﺬا اﻟﺘﻮﺛﻴﻖ‪.‬‬

‫ﻧﻈﺮة ﻋﺎﻣﺔ ﻋﻦ دورة اﻟﺤﻴﺎة‬

‫أول ﺷﻲء‬

‫ﻧﻘﻄﺔ اﻟﺪﺧﻮل ﻟﻜﻞ ﻃﻠﺒﺎت ﺗﻄﺒﻴﻘﺎت ‪ Laravel‬ﻫﻮ اﻟﻤﻠﻒ‬


‫‪ُ . public/index.php‬ﺗ ‪Å‬‬
‫ﻮﺟﻪ اﻋﺪادات ﺧﺎدم اﻟﻮﻳﺐ‬
‫)‪ Apache‬أو ‪ (Nginx‬ﻛﻞ اﻟﻄﻠﺒﺎت ﻧﺤﻮ ﻫﺬا اﻟﻤﻠﻒ‪ .‬ﻻ ﻳﺤﺘﻮي‬
‫ﻛﺜﻴﺮ ﻣﻦ اﻟﺘﻌﻠﻴﻤﺎت اﻟﺒﺮﻣﺠﻴﺔ؛ إﻻ‬
‫ٍ‬ ‫اﻟﻤﻠﻒ ‪ index.php‬ﻋﻠﻰ‬
‫أ ‪Å‬ﻧﻪ ﻧﻘﻄﺔ ﺑﺪاﻳﺔ ﻟﺒﻘﻴﺔ إﻃﺎر اﻟﻌﻤﻞ‪.‬‬

‫ﻳُ ﺤﻤ‪ Ö‬ﻞ اﻟﻤﻠﻒ ‪ index.php‬ﺗﻌﺮﻳﻒ اﻟﺘﺤﻤﻴﻞ اﻟﺘﻠﻘﺎﺋﻲ‬


‫‪ autoloader‬اﻟﺬي ﻳُ ‪Ö‬‬
‫ﻮﻟﺪه ‪ ،Composer‬ﺛﻢ ﻳﻌﻘﺒﻪ ﺑﺠﻠﺐ ﻧﺴﺦ‬
‫ﻣﻦ ﺗﻄﺒﻴﻖ ‪ Laravel‬ﻣﻦ ﺳﻜﺮﻳﺒﺖ‬
‫‪ . bootstrap/app.php‬أول ﻓﻌﻞ ﻳﻘﻮم ﺑﻪ ‪Laravel‬‬
‫ﻧﻔﺴﻪ ﻫﻮ إﻧﺸﺎء ﻧﺴﺨﺔ ﻣﻦ اﻟﺘﻄﺒﻴﻖ ‪ /‬ﺣﺎوي اﻟﺨﺪﻣﺎت )‪service‬‬
‫‪.(container‬‬

‫ُﻧﻮى‪ / HTTP‬اﻟﻄﺮﻓﻴﺔ )‪(HTTP / Console Kernels‬‬

‫ﺑﻌﺪﻫﺎ ﻳﺮﺳﻞ اﻟﻄﻠﺐ اﻟﻘﺎدم إﻣﺎ ﻟﻨﻮاة ‪ HTTP‬أو ﻟﻨﻮاة اﻟﻄﺮﻓﻴﺔ‬


‫ﺣﺴﺐ ﻧﻮع اﻟﻄﻠﺐ اﻟﺬي ﻳﺪﺧﻞ اﻟﺘﻄﺒﻴﻖ‪ .‬ﺗﻌﻤﻞ اﻟﻨﻮاﺗﺎن ﻛﻤﻮﻗﻊ‬
‫ﻣﺮﻛﺰي ﺗﻤﺮ ﻋﺒﺮه ﻛﻞ اﻟﻄﻠﺒﺎت‪ .‬ﺣﺎﻟﻴﺎ ﻓﻠﻨﺮﻛﺰ ﻓﻘﻂ ﻋﻠﻰ ﻧﻮاة ‪HTTP‬‬
‫اﻟﻤﻮﺟﻮدة ﻓﻲ ‪ . app/Http/Kernel.php‬ﺗﺸﺘﻖ ﻧﻮاة‬
‫‪ HTTP‬اﻟﺼﻨﻒ‬
‫‪، Illuminate\Foundation\Http\Kernel‬‬
‫اﻟﺬي ﻳُ ﻌﺮ‪ Ö‬ف ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻟﻌﻤﻠﻴﺎت اﻟﺘﻤﻬﻴﺪﻳﺔ‬
‫)‪ُ (bootstrappers‬ﺗ َﺸ ‪Å‬ﻐﻞ ﻗﺒﻞ ﺗﻨﻔﻴﺬ اﻟﻄﻠﺐ‪ ،‬واﻟﺘﺐ ﺳﺘُ ‪Ö‬ﻌﺪ‬
‫ﻋﻤﻠﻴﺎت ﻣﻌﺎﻟﺠﺔ اﻷﺧﻄﺎء‪ ،‬وﺳﺠﻞ اﻟﻮﻟﻮج‪ ،‬رﺻﺪ ﺑﻴﺌﺔ اﻟﺘﻄﺒﻴﻖ‬
‫واﻟﻘﻴﺎم ﻣﻬﻤﺎت أﺧﺮى ﻳﺘﻮﺟﺐ إﺗﻤﺎﻣﻬﺎ ﻗﺒﻞ اﻟﺸﺮوع ﻓﻲ ﻣﻌﺎﻟﺠﺔ‬
‫اﻟﻄﻠﺐ‪.‬‬

‫ُﺗﻌﺮ‪ Ö‬ف ﻧﻮاة ال‪ً HTTP‬‬


‫أﻳﻀﺎ ﻗﺎﺋﻤﺔ ﻣﻦ اﻟﺒﺮﻣﺠﻴﺎت اﻟﻮﺳﻴﻄﺔ‬
‫)‪ (middleware‬اﻟﺘﻲ ﺗﺴﺘﻠﺰم ﻣﺮور ﻛﻞ اﻟﻄﻠﺒﺎت ﻋﺒﺮﻫﺎ ﻗﺒﻞ أن‬
‫ﻳﻌﺎﻟﺠﻬﺎ اﻟﺘﻄﺒﻴﻖ‪ .‬ﺗﺘﻮﻟﻰ ﻫﺬه اﻟﺒﺮﻣﺠﻴﺎت اﻟﻮﺳﻴﻄﺔ ﻛﺘﺎﺑﺔ وﻗﺮاءة‬
‫ﺟﻠﺴﺎت ‪ ،HTTP sessions) HTTP‬وﺗﻘﺮﻳﺮ إن ﻛﺎن اﻟﺘﻄﺒﻴﻖ ﻓﻲ‬
‫ﻧﻤﻂ اﻟﺼﻴﺎﻧﺔ )‪ ،(maintenance mode‬واﻟﺘﺤﻘﻖ ﻣﻦ رﻣﺰ‬
‫‪ ،CSRF‬واﻟﻤﺰﻳﺪ‪ .‬ﺗﻮﻗﻴﻊ اﻟﺪاﻟﺔ ﻟﺪاﻟﺔ ﻧﻮاة ‪ handle HTTP‬ﺑﺴﻴﻂ‬
‫ﺟﺪً ا‪ :‬إذ ﺗﺘﻠﻘﻰ ﻃﻠ ًﺒﺎ ‪ Request‬وﺗﻌﻴﺪ ردً ا ‪ .Response‬ﺗﺨﻴﻞ‬
‫اﻟﻨﻮاة ﻛﺼﻨﺪوق أﺳﻮد ﻛﺒﻴﺮ ﻳﻤﺜﻞ ﻛﺎﻣﻞ ﺗﻄﺒﻴﻘﻚ‪ .‬ﺗﻤﺪه ﺑﻄﻠﺒﺎت‬
‫‪ HTTP‬وﺳﻴﻌﻴﺪ ﻟﻚ إﺟﺎﺑﺎت ‪.HTTP‬‬

‫ﻣﻘﺪﻣﻮ اﻟﺨﺪﻣﺎت‬

‫ﺗﺤﻤﻴﻞ ﻣﻘﺪﻣﻲ اﻟﺨﺪﻣﺎت ﻣﻦ أﺟﻠﻚ ﻫﻲ ﻣﻦ أﻫﻢ أﻓﻌﺎل ﻋﻤﻠﻴﺎت‬


‫اﻟﻨﻮاة اﻟﺘﻤﻬﻴﺪﻳﺔ ﻟﺘﻄﺒﻴﻘﻚ‪ .‬ﻛﻞ ﻣﻘﺪﻣﻲ اﻟﺨﺪﻣﺎت ﻟﺘﻄﺒﻴﻘﻚ ُﻣﻌﺪ‪ ë‬ات‬
‫ﻓﻲ ﻣﻠﻒ اﻹﻋﺪادات ‪ config/app.php‬وﺗﺤﺪﻳﺪً ا ﻓﻲ‬
‫ﻣﺼﻔﻮﻓﺔ ‪ .providers‬ﺑﺪاﻳﺔ‪ ،‬ﺳﺘُ ﻨﺎدى اﻟﺪاﻟﺔ ‪register‬‬
‫ﻋﻠﻰ ﻛﻞ ﻣﻘﺪﻣﻲ اﻟﺨﺪﻣﺎت‪ ،‬ﺑﻌﺪﻫﺎ ﻋﻨﺪﻣﺎ ﻳُ َﺴ ‪Å‬ﺠﻞ ﻛﻞ اﻟﻤﻘﺪﻣﻴﻦ‬
‫ﺳﺘُ ﻨﺎدى اﻟﺪاﻟﺔ ‪. boot‬‬

‫ﻣﻘﺪﻣﻮ اﻟﺨﺪﻣﺎت ﻣﺴﺆوﻟﻮن ﻋﻦ ﺗﻤﻬﻴﺪ ﻛﻞ ﻣﻜﻮﻧﺎت إﻃﺎر اﻟﻌﻤﻞ‬


‫ﻣﺜﻞ ﻗﺎﻋﺪة اﻟﺒﻴﺎﻧﺎت‪ ،‬واﻟﻄﺎﺑﻮر‪ ،‬واﻟﺘﺤﻘﻖ )‪،(validation‬‬
‫وﻣﻜﻮﻧﺎت اﻟﺘﻮﺟﻴﻪ‪ .‬ﻣﻘﺪﻣﻮ اﻟﺨﺪﻣﺎت أﻫﻢ ﺟﺎﻧﺐ ﻣﻦ ﻋﻤﻠﻴﺔ‬
‫اﻟﺘﻤﻬﻴﺪ ﻓﻲ ‪ Laravel‬ﻛﺎﻣﻠﺔ ﺑﻤﺎ أﻧﻬﻦ ﻳﺸﻐﻠﻦ وﻳﻌﺪدن ﻛﻞ ﺧﺎﺻﻴﺔ‬
‫ﻳﻮﻓﺮﻫﺎ إﻃﺎر اﻟﻌﻤﻞ‪.‬‬

‫إرﺳﺎل اﻟﻄﻠﺐ )‪(Dispatch Request‬‬

‫ﻟﺤﻈﺔ إﻧﻬﺎء ﺗﻤﻬﻴﺪ اﻟﺘﻄﺒﻴﻖ و ﺗﺴﺠﻴﻞ ﻛﻞ ﻣﻘﺪﻣﻲ اﻟﺨﺪﻣﺎت‪ ،‬ﻳُ َﺴ ‪Å‬ﻠﻢ‬


‫‪ Request‬ﻟﺠﻬﺎز اﻟﺘﻮﺟﻴﻪ )‪ (router‬ﻟﻺرﺳﺎل‪ .‬ﻳﺮﺳﻞ ﺟﻬﺎز‬
‫اﻟﺘﻮﺟﻴﻪ اﻟﻄﻠﺐ ﻟﻤﺴﺎر )‪ (route‬أو وﺣﺪة ﺗﺤﻜﻢ )‪(controller‬‬
‫ﻛﻤﺎ ﻳُ َﺸ ‪Ö‬ﻐﻞ أي ﺑﺮﻣﺠﻴﺎت وﺳﻴﻄﺔ ﺧﺎﺻﺔ ﺑﺎﻟﻤﺴﺎر‪.‬‬

‫اﻟﺘﺮﻛﻴﺰ ﻋﻠﻰ ﻣﻘﺪﻣﻲ اﻟﺨﺪﻣﺎت‬


‫ﻣﻘﺪﻣﻮ اﻟﺨﺪﻣﺎت ﻫﻦ ً‬
‫ﻓﻌﻼ ﻣﻔﺘﺎح ﺗﻤﻬﻴﺪ اﻟﺘﻄﺒﻴﻖ ‪.Laravel‬أوﻻ‬
‫ﻨﺸﺊ ﻧﺴﺨﺔ ﻣﻦ اﻟﺘﻄﺒﻴﻖ‪ُ ،‬ﺗ َﺴ ‪Å‬ﺠﻞ ﻣﻘﺪﻣﻮ اﻟﺨﺪﻣﺎت‪ ،‬وأﺧﻴﺮا ﻳُ َﺴ ‪Å‬ﻠﻢ‬
‫ُﺗ َ‬
‫اﻟﻤ َﻤﻬ‪ Å‬ﺪ‪ .‬اﻟﻤﻮﺿﻮع ﺑﺴﻴﻂ ﺟﺪا! اﻣﺘﻼك ﻓﻬﻢ راﺳﺦ‬
‫اﻟﻄﻠﺐ ﻟﻠﺘﻄﺒﻴﻖ ُ‬
‫ﻟﻜﻴﻔﻴﺔ ﺑﻨﺎء وﺗﺸﻐﻴﻞ ‪ Laravel‬ﻋﺒﺮ ﻣﻘﺪﻣﻲ اﻟﺨﺪﻣﺎت ﻗﻴﻢ ﺟﺪً ا‪.‬‬
‫‪Å‬‬
‫اﻟﻤﺠﻠﺪ‬ ‫اﻓﺘﺮاﺿﻴﺎ ﻓﻲ‬
‫ً‬ ‫‪Å‬‬
‫ﻣﺨﺰﻧﺎت‬ ‫ﻣﻘﺪﻣﻮ اﻟﺨﺪﻣﺎت‬
‫‪. app/Providers‬‬

‫ﻣﺒﺪﺋﻴﺎ‪ ،‬اﻟﻤﻘﺪم ‪ AppServiceProvider‬ﻓﺎرغ إﻟﻰ ﺣﺪ‬ ‫ً‬


‫ﻣﺎ‪ .‬ﻳﻤﺜﻞ ﻫﺬا اﻟﻤﻘﺪم ﻣﻜﺎ ًﻧﺎ ﻣﻤﺘﺎ ًزا ﻹﺿﺎﻓﺔ ارﺗﺒﺎﻃﺎت )‪(bindings‬‬
‫ﻋﻤﻠﻴﺔ اﻟﺘﻤﻬﻴﺪ )‪ (bootstrapping‬و ﺣﺎوﻳﺎت ﺧﺪﻣﺎت ﺗﻄﺒﻴﻘﻚ‪.‬‬
‫ﻟﻠﺘﻄﺒﻴﻘﺎت اﻟﻀﺨﻤﺔ ﻗﺪ ﺗﺮﻏﺐ ﻓﻲ إﻧﺸﺎء ِﻋﺪ‪ Å‬ة ﻣﻘﺪﻣﻲ ﺧﺪﻣﺎت‪ ،‬ﻛﻞ‬
‫واﺣﺪة ﺑﻤﺴﺘﻮى أﻛﺜﺮ ﺑﺴﺎﻃﺔ ﻣﻦ اﻟﺘﻤﻬﻴﺪ‪.‬‬

‫ﻣﺼﺎدر‬
‫ﺻﻔﺤﺔ ‪ Request Lifecycle‬ﻓﻲ ﺗﻮﺛﻴﻖ ‪Laravel‬‬
‫اﻟﺮﺳﻤﻲ‪.‬‬

‫ﺗﺼﻨﻴﻔﺎن‪Laravel :‬‬
‫‪Laravel Architecture Concepts‬‬

‫آﺧﺮ ﺗﻌﺪﻳﻞ ﻟﻬﺬه اﻟﺼﻔﺤﺔ ﻛﺎن ﻳﻮم ‪ 24‬أﻛﺘﻮﺑﺮ ‪ ،2018‬اﻟﺴﺎﻋﺔ ‪.14:16‬‬

‫اﻟﻤﺤﺘﻮى ﻣﻨﺸﻮر وﻓﻖ اﻟﻤﺸﺎع اﻹﺑﺪاﻋﻲ اﻟﻨﺴﺒﺔ ﻟﻠﻤﺆﻟﻒ ﻏﻴﺮ ﺗﺠﺎري اﻟﻤﺸﺎرﻛﺔ ﺑﺎﻟﻤﺜﻞ إن‬
‫ﻟﻢ ﻳﺮد ﺧﻼف ذﻟﻚ‪.‬‬

‫إﺧﻼء ﻣﺴﺆوﻟﻴﺔ‬ ‫ﺳﻴﺎﺳﺔ اﻟﺨﺼﻮﺻﻴﺔ ﺣﻮل ﻣﻮﺳﻮﻋﺔ ﺣﺴﻮب‬

‫ﻣﺴﺘﻘﻞ‬ ‫أﻧﺎ‬
‫أﻛﺒﺮ ﻣﻨﺼﺔ ﻋﻤﻞ ﺣﺮ ﻓﻲ اﻟﻌﺎﻟﻢ اﻟﻌﺮﺑﻲ‬ ‫أداة واﺣﺪة ﻹدارة ﻣﺸﺎرﻳﻌﻚ وﻓﺮﻳﻘﻚ‬

‫ﺑﻴﻜﺎﻟﻴﻜﺎ‬ ‫ﺧﻤﺴﺎت‬
‫ﻣﺘﺠﺮ اﻟﻘﻮاﻟﺐ واﻟﻤﻨﺘﺠﺎت اﻟﺮﻗﻤﻴﺔ‬ ‫ﺳﻮق ﺑﻴﻊ وﺷﺮاء اﻟﺨﺪﻣﺎت اﻟﻤﺼﻐﺮة‬

‫زﻳﺘﻮن‬ ‫ﺑﻌﻴﺪ‬
‫ﺑﺮﻧﺎﻣﺞ ﺧﺪﻣﺔ اﻟﻌﻤﻼء اﻷﻛﺜﺮ ﺑﺴﺎﻃﺔ‬ ‫ﻣﻮﻗﻊ ﺗﻮﻇﻴﻒ اﻟﺨﺒﺮاء ﻋﻦ ﺑﻌﺪ‬

‫ﻣﻮﺳﻮﻋﺔ ﺣﺴﻮب‬ ‫أﻛﺎدﻳﻤﻴﺔ ﺣﺴﻮب‬


‫اﻟﻤﺮﺟﻊ اﻟﺸﺎﻣﻞ ﻟﻠﻤﻄﻮرﻳﻦ اﻟﻌﺮب‬ ‫دورات اﺣﺘﺮاﻓﻴﺔ ﻟﺘﻄﻮﻳﺮ ﻣﺴﺘﻘﺒﻠﻚ‬

‫ﺣﺴﻮب ‪I/O‬‬
‫ﻣﺠﺘﻤﻊ ﻟﻠﻨﻘﺎش اﻟﻬﺎدف واﻟﻤﻮﺿﻮﻋﻲ‬

You might also like