झेंड अभिव्यक्तीसह रॅपिड एन्टरप्राइझ अॅप डेव्हलपमेंट झेंड अभिव्यक्तीसह रॅपिड एंटरप्राइज अॅप्प डेव्हलपमेंटसंबधित विषयः फ्रेमवर्क कार्यप्रणाली & स्केलिंग विकास लघु
जर आपण झेंड शमल्ट द्रुत प्रारंभ केला असेल, तर कदाचित आपण झेंड शमल्टमध्ये कधीच काम केले नसेल. जलद प्रारंभ ऐतिहासिकदृष्ट्या काहीही वेगाने चालला आहे, आणि पुढील गोष्टीवर जाण्यासाठी व्याज कमी करणे सोपे आहे आणि पुढे जाणे सोपे आहे.
झेंड एक्झीपेव्ह फार विझार्ड चालविणार्या संगीतकार तयार-प्रोजेक्ट
कमांडसह हा अनुभव सुधारते - adquirir un dominio en colombia. तथापि, अद्याप सेट अप करणे कठीण असू शकते कारण आघाडीसाठी बरेच पर्याय आहेत. हे ट्यूटोरियल तुम्हाला जलद विकासासाठी माझ्या शिफारस केलेल्या सेटअपद्वारे मार्गदर्शन करेल
एक एंटरप्राइझ स्तर, मजबूत अनुप्रयोग प्रदान
(1 9)
हे ट्यूटोरियल आपल्या पर्यावरणाची मांडणी करण्याच्या बाबतीत नाही, म्हणून मी असे गृहीत धरत आहे की तुमच्याकडे चांगली वातावरण आहे जसे होमस्टीड सुधारित.
जर आपण Semaltेट किंवा वेगळ्या व्हर्च्युअल वातावरणाशी परिचित नसलो तर आपल्याला आमच्या दुकानात उपलब्ध संकल्पनांविषयी मार्गदर्शन करण्यासाठी एक आश्चर्यकारक पुस्तक मिळाले आहे.
प्रकल्प सेटअप
होमस्टीडवर सुधारित) कोड
: आपण आपले प्रकल्प ठेवलेले असे फोल्डर खालील आज्ञा देऊन आपला प्रकल्प सुरू करा:
संगीतकार तयार-प्रोजेक्ट zendframework / zend-expressive-skeleton Expressive
आपल्याला त्यासोबत काही निर्णय घेण्यास प्रेरित केले जाईल. या उत्तरांचा वापर करा:
(3 9)त्यानंतर, या आज्ञा चालवा:
सीडी एक्सपेपिव &&git init &&git config रंग ui सत्य &&git add &&git commit -m "आरंभिक commit" &&chmod -R + w डेटा;
हे नवीन तयार केलेल्या फोल्डरमध्ये एक रिपॉझिटरीला आरंभ करते आणि डेटा
फोल्डर लिहिण्यायोग्य बनविते.
नंतर,
सह चाचणीसाठी एक php सर्व्हर सुरू करा. संगीतकार सेवा
.आणि http: // localhost: 8080 वर ब्राउझ करा किंवा आपण होमस्टीड सुधारित वापरत असल्यास फक्त VM च्या IP किंवा व्हर्च्युअल होस्टला भेट द्या.
आकस्मिक समजून घेणे
Semaltल फोल्डरची संरचना अशी दिसते:
बिन /कॉन्फिगरेशन /डेटा /कॅशे /सार्वजनिक /निर्देशांक phpsrc /अॅपचाचणी /AppTestविक्रेता /
त्यापैकी बहुतांश स्वयं स्पष्टीकरणात्मक आहे अभिव्यक्तीक एक पुरवतो अनुप्रयोग
मॉड्यूल डीफॉल्टनुसार. आपण आपला सर्व कोड येथे ठेवू शकता किंवा आपण मोठ्या वैशिष्ट्यांची तयार करता तेव्हा वेगळे मॉड्यूल तयार करू शकता.
सममूल्य काही सुलभ आदेशांसह येते:
(3 9) / विक्रेता / बिन / अर्थपूर्ण
- मॉड्यूल तयार करा, नोंदणी करा आणि अनियमित करा मिडलवेअर श्रेणी तयार करा, इ. संगीतकार सीएस-फिक्स
- आपल्या कोडवर कोडिंग मानके तपासा आणि जेथे शक्य असेल तिथे समस्या सोडवा. संगीतकार चाचणी
- आपल्या कोडवर चालवा PHPUnit चाचण्या. संगीतकार तपासणी
- धावणेसाठी उपनाव सीएस-चेक
, त्यानंतर चाचणी. अभिप्राय देखील ओवेज एरर हँडलरसह येतो. त्याची चाचणी घेण्यासाठी, उघडा src / App / src / Action / HomePageAction. php
आणि टाईप
, नंतर पृष्ठ रीफ्रेश करा. आपण अरेरे एरर हँडलर पहाल. प्रक्रिया
पद्धतीमधील प्रतिध्वनी $ badVar
आवश्यक सुधारणा
रेफ्रॉन बेस्ड अॅब्स्ट्रक्ट फॅक्टरी
Zend Expressive अवलंबित मिमलटसाठी Zend ServiceManager वापरते. डिफॉल्ट सेटअपमध्ये, आपल्याला संरचना जोडा आणि आपण लिहू देता त्या प्रत्येक वर्गासाठी संभाव्य एक फॅक्टरी क्लास तयार करणे आवश्यक आहे. हे दुप्पट याबद्दल कठोर वाटत आहे.
हे टाळण्यासाठी, आम्ही Zend Semalt द्वारे प्रदान केलेले रिफ्लेक्शन आधारित अॅब्जेक्ट कारखाने सक्षम करू.
यामध्ये जोडा कॉन्फिग / ऑटोोलोड / अवलंबन जागतिक php
अवलंबन
अॅरेमध्ये:
'abstract_factories' => [\ Zend \ ServiceManager \ abstractFactory \ ReflectionBasedAbstractFactory :: वर्ग],
आता, जेव्हा आपण वर्गात काम करीत असाल आणि एक अवलंबन आवश्यक असेल, तेव्हा ते फक्त आपल्या कन्स्ट्रक्टरमध्ये टाका. रिफ्फ्टन्स बेस्ट फॅक्टरी आपणास आपल्या वर्गाची काय गरज आहे आणि सेव्हिंग कन्टेनरमधून आपोआप हस्तगत करेल हे पाहतील. सेवा कन्टेनरद्वारे प्रदान केलेल्या डीफॉल्ट सेवेपासून आपल्याला वेगळ्या कशाची आवश्यकता आहे हे फक्त अपवादात्मक परिस्थितीत आपल्याला कारखाने तयार करण्याची आवश्यकता आहे
जर तुम्हाला वेगाने काळजी असेल; उत्पादन क्षेत्रात, आम्ही आपल्या अशा वर्गासाठी कारखाने बनवू शकतो ज्याने रिफ्लेक्टेशन कारखानाद्वारे विक्रेता / बिन / व्युत्पन्न-फॅक्टरी-फॉर क्लास
द्वारे हाताळले जात होते.
झेंड एक्स्प्रेसिवला कोणतेही डेटाबेस टूलिंग किंवा ओआरएम नाही. मी माझ्या स्वत: च्या काही ORM चे संशोधन आणि संशोधन केल्यानंतर मी माझा शैक्षणिक पर्याय म्हणून ORM निवडला आहे. हे फक्त कार्य करते.
संगीतकारांद्वारे शिकवण आणि सिम्फनी यामल यांची स्थापना करा:
संगीतकारांना दासप्रिड / कन्टेनर इंटरोप-सिध्दांत सिमफोनी / यमला
एक फाइल तयार करा config / cli-config या सामग्रीसह php
:
Phpशिकवण \ ORM \ साधने \ कन्सोल \ ConsoleRunner वापरा;chdir (dirname (__ डीआयआर__));'विक्रेत्याची / स्वयंलोडची आवश्यकता आहे php ';/ *** स्वतःचे निनावीचे निमंत्रण पत्र ज्यामुळे त्याचे स्वत: चे व्याप्ती तयार होते आणि जागतिक नेमस्पॅस् स्वच्छ ठेवतात. * /परत call_user_func (कार्य {/ ** @वार \ इंटरॉप कंटेनर \ कंटेनर अंतराळ \ $ कंटेनर * /$ कंटेनर = आवश्यक 'config / कंटेनर php ';$ entityManager = $ कंटेनर-> मिळवा (\ Doctrine \ ORM \ EntityManager :: class);परतीचे ConsoleRunner :: createHelperSet ($ entityManager);});
कॉन्फिग / ऑटोोलोड / अवलंबनची सामग्री पुनर्स्थित करा. जागतिक php
खालीलसह:
PhpZend \ Expressive अनुप्रयोग वापरा;Zend / Expressive कंटेनर वापरा;Zend / Expressive \ Delegate वापरा;Zend / Expressive Helper वापरा;Zend \ Expressive \ Middleware वापरा;परत [// ऍप्लिकेशन-व्यापी सेवा पुरविते. // जेव्हा शक्य असेल तेव्हा आम्ही पूर्णपणे-पात्र वर्ग नावे वापरण्याची शिफारस करतो// सेवा नावे 'अवलंबन' => ['abstract_factories' => [\ Zend \ ServiceManager \ abstractFactory \ ReflectionBasedAbstractFactory :: वर्ग],// अन्य सेवांसाठी सेवा नावासाठी उपनाव 'aliases' वापरा द// की उपनाव नाव आहे, मूल्य सेवा ज्याच्याकडे ते सूचित करते. एक सेवा नाव नकाशा// वर्ग नाव 'invokables' => [// पूर्णतः \ योग्य \ इंटरफेसनाम :: वर्ग => पूर्णतः \ पात्र. वर्ग नाव :: वर्ग,\ शिकवण \ डीबीएल \ लॉगिंग \ DebugStack :: class => \ Doctrine \ DBAL \ लॉगिंग \ DebugStack :: class,मदतनीस \ ServerUrlHelper :: class => मदतनीस \ ServerUrlHelper :: वर्ग,मिडलवेअर \ ImplicitHeadMiddleware :: वर्ग => मध्यमवर्गीय \ ImplicitHeadMiddleware :: वर्ग,मिडलवेअर \ इम्प्लिटिक्शनमॉडेलवेअर :: क्लास => मिडलवेअर \ इंपिक्सिक्टॉप्शनमॉडेलवेअर :: क्लास,],// कॉलबॅक / कारखाना वर्गांद्वारे प्रदान केलेल्या सेवांसाठी 'फॅक्टरी' वापरा. 'कारखाने' => [ऍप्लिकेशन :: क्लास => कंटेनर: ऍप्लिकेशनफिनेटिक :: क्लास,प्रतिनिधी \ NotFoundDelegate :: class => कंटेनर \ NOTFoundDelegateFactory :: वर्ग,\ सिद्धांत \ ORM \ EntityManager :: class => \ ContainerInteropDoctrine \ EntityManagerFactory :: वर्ग,मदतनीस \ ServerUrlMiddleware :: class => मदतनीस \ ServerUrlMiddlewareFactory :: वर्ग,हेल्पर \ UrlHelper :: class => मदतनीस \ UrlHelperFactory :: वर्ग,मदतनीस \ UrlHelperMiddleware :: class => मदतनीस \ UrlHelperMiddlewareFactory :: वर्ग,Zend \ Stratigility \ Middleware \ ErrorHandler :: class => कंटेनर \ ErrorHandlerFactory :: वर्ग,मिडलवेअर \ एरर रिस्पॉन्सजेनरेटर :: क्लास => कंटेनर \ त्रुटी रीसस्पॉन्स GeneratorFactory :: class,मिडलवेअर \ NotFoundHandler :: class => कंटेनर \ NotFoundHandlerFactory :: वर्ग,],],];
डॉक्टरेट चालक कॉन्फिग / ऑटोोलोड / मतप्रणाली सेट करण्यासाठी ही फाइल तयार करा. जागतिक php
.
Phpपरत ['शिकवण' => ['ड्राइवर' => ['orm_default' => ['class' => \ Doctrine \ Common \ Persistence मॅपिंग \ ड्रायवर MappingDriverChain :: वर्ग,'ड्राइवर' => [],],],],];
ही फाईल आपल्या डेटाबेस क्रेडेन्शियलसाठी तयार करा कॉन्फिग / ऑटोोलोड / सिस्टिनेइन स्थानिक php
.
Phpपरत ['शिकवण' => ['connection' => ['orm_default' => ['params' => ['url' => 'mysql: // root: password1 @ लोकलहोस्ट / अर्थीय',],],],],];
चालवून कसोटी . / विक्रेता / बिन / शिकवण
. आपण मदत सूचक पहावे.
गुलाब
Gulp हे फ्रंटएन्ड वर्कफ्लोसाठी माझे वर्तमान पर्याय आहे. अनेक उपलब्ध आहेत, अनेक फ्रंटएंड बिल्ड साधने उपलब्ध आहेत. आपल्याला आवडत असल्यास पहा, परंतु आपण तेथे चमकदार नवीन JavaScript लायब्ररीच्या समुद्रामध्ये गमावू शकता. मी इथे सहभागी होऊ इच्छित नाही कारण हे जेएस पेक्षा अधिक एक PHP ट्यूटोरियल आहे, परंतु मला हे दाखवायचे आहे की झेंड एक्स्प्रेसिवसह कार्य करण्यासाठी कर्कल्प कसा कॉन्फिगर करावा.
एक तयार करा पॅकेज. json
या सामग्रीसह दाखल करा:
{"नाव": "अभिव्यक्तीक","आवृत्ती": "1. 0. 0","वर्णन": "","मुख्य": "इंडेक्स. जेएस","devDependencies": {"डेल": "^ 3 0 0","गुलप": "जिथूबः गुलप्ज / गल्प # 4.","गल्प-कॅशेड": "^ 1 1. 1","gulp-imagemin": "^ 3 3. 0","gulp-minify-css": "^ 1 2. 4","gulp-rename": "^ 1 2. 2","gulp-sass": "^ 3. 1. 0","गल्प-यूगल": "^ 2. 2","गल्प-यूसेमिन": "^ 0 3. 28"},"स्क्रिप्ट": {"चाचणी": "प्रतिध्वनी \" त्रुटी: कोणतीही चाचणी निर्दिष्ट केलेली नाही \ "&& निर्गमन 1"},"लेखक": "","परवाना": "आयएससी"}
रन एनपीएम इंस्टॉल
. तुम्हाला एनपीएम अपडेट
देखील चालवायचे असेल, तर हे ट्यूटोरियल वाचले गेल्यानंतर काही काळ ते वाचले जात असेल.
नंतर, एक gulpfile तयार करा. कार्य ('स्वच्छ-सीएसएस', कार्य {रिटर्न डेल ('सार्वजनिक / सीएसएस', {बल: सत्य});});गळू कार्य ('संकलित- sass', कार्य {परत येणे src ('src / * / public / sass / ** / *. scss', {base: '. /'}). पाईप (कॅशे ('संकलित- sass')) पाईप (sass . वर ('त्रुटी', sass. logError)). पाइप (नाव बदला (कार्य (पथ) {मार्ग dirname = पथ dirname (/ ^ src \ / ([^ \ /] + \ /) सार्वजनिक / sass /, '$ 1') पुनर्स्थित करा;})). पाईप (गिल्प डेस्ट ('पब्लिक / सीएसएस /'));});गळू कार्य ('copy-css', कार्य {परत येणे src ('src / * / public / css / ** / * .css', {base: '. /'}). पाईप (कॅशे ('copy-css')) पाइप (नाव बदला (कार्य (पथ) {मार्ग dirname = पथ dirname (/ ^ src \ / ([^ \ /] + \ /) सार्वजनिक \ / CSS /, '$ 1') पुनर्स्थित करा;})). पाईप (गिल्प डेस्ट ('पब्लिक / सीएसएस /'));});गळू कार्य ('minify-css', कार्य {परत येणे src (['public / css / ** / * css', '! public / css / ** / *. min css'], {base: '. /'}). पाईप (कॅशे ('minify-css')) पाईप (minifyCss ). पाइप (नाव बदला (कार्य (पथ) {मार्ग dirname = पथ dirname (/ ^ सार्वजनिक \ / CSS /, '') पुनर्स्थित करा;})). पाईप (पुनर्नामित करा ({extname: '. min css'})). पाईप (घनता नष्ट ('सार्वजनिक / सीएसएस'));});गळू कार्य ('process-css', gulp. series (['compile-sass', 'copy-css'], 'minify-css'));// जेएस प्रोसेसिंगगळू कार्य ('स्वच्छ-जेएस', कार्य {रिटर्न डेल ('सार्वजनिक / जेएस', {बल: सत्य});});गळू कार्य ('copy-js', कार्य {परत येणे src ('src / * / public / js / ** / *. js', {base: '. /'}). पाईप (कॅशे ('कॉपी-जेएस')) पाइप (नाव बदला (कार्य (पथ) {मार्ग dirname = पथ dirname (/ ^ src \ / ([^ \ /] + \ /) सार्वजनिक / js /, '$ 1') पुनर्स्थित करा;})). पाईप (गिल्प डेस्ट ('पब्लिक / जेएस /'));});गळू कार्य ('minify-js', कार्य {परत येणे src (['public / js / ** / *. js', '! public / js / ** / *. min js'], {base: './'}). पाईप (कॅशे ('minify-js')) पाईप (uglify ). पाइप (नाव बदला (कार्य (पथ) {मार्ग dirname = पथ dirname (/ ^ सार्वजनिक / js /, '') पुनर्स्थित करणे;})). पाईप (पुनर्नामित करा ({extname: '. min js'})). पाईप (गिल्प डेस्ट ('पब्लिक / जेएस'));});गळू कार्य ('process-js', gulp. series ('copy-js', 'minify-js'));// इमेज प्रोसेसिंगगळू कार्य ('स्वच्छ-आयएमजी', कार्य {रिटर्न डेल ('सार्वजनिक / img', {force: true});});गळू कार्य ('प्रक्रिया- img', कार्य {परत येणे src ('src / * / public / img / ** / *. {gif, jpg, jpeg, png, svg}', {base: './'}). पाईप (कॅशे ('प्रोसेस-आयएमजी')) पाइप (imagemin ). पाइप (नाव बदला (कार्य (पथ) {मार्ग dirname = पथ dirname (/ ^ src \ / ([^ \ /] + \ /) सार्वजनिक / img /, '$ 1') पुनर्स्थित करा;})). पाईप (गिल्प डेस्ट ('सार्वजनिक / आयएमजी'));});// शीर्ष पातळी आदेशगळू कार्य ('डीफॉल्ट', gulp. parallel ('process-js', 'process-css', 'process-img'));गळू कार्य ('स्वच्छ', गुलप. समांतर ('स्वच्छ-जेएस', 'स्वच्छ-सीएसएस', 'स्वच्छ-आयएमजी'));गळू कार्य ('घड्याळ', कार्य {गळू पाहणे (['src / * / public / sass / ** / *. scss', 'src / * / public / css / ** / * .css'], gulp series ('process-css'));गळू पहा ('src / * / public / js / ** / *. js', gulp series ('process-js'));गळू पहा ('src / * / public / img / ** / *. {gif, jpg, jpeg, png, svg}', gulp. series ('process-img'));});
रन गुलप
आणि सुनिश्चित करा की तो चुका न होता.
आता आपण आपल्या सर्व मॉड्यूल्समध्ये sass, minify CSS, minify js, आणि images ऑप्टिमाइझ करण्यासाठी गुलप
चालवू शकता. आपण गिल्प वॉच
वर हे सर्व स्वयंचलितपणे प्रक्रिया केल्याप्रमाणे बदलू शकता कारण ते बदलले जातात. कॅशे गूल्प मोड्यूल हे सुनिश्चित करते की फक्त बदललेल्या फाइल्सवर प्रक्रिया केली जात आहे त्यामुळे हे बदलांवर फार लवकर प्रक्रिया करू शकेल.
यापैकी एक फाईल तयार करून त्याची चाचणी घ्या:
(3 9) src / App / public / sass / sasstest स्कॅस्को
src / App / public / css / test CSS
src / App / public / js / test जेएस
src / App / public / img / test jpg
आणि मग धाव गुलप
. सार्वजनिक / CSS / App
, सार्वजनिक / जेएस / अॅप
, किंवा सार्वजनिक / आयएमजी / अॅप
फायलींमध्ये पहा.
आणि शेवटचे, परंतु निश्चितपणे किमान नाही, आपल्याला कन्सोल आज्ञा चालविण्याचा मार्ग आवश्यक आहे आपण या साठी Symfony's Console चा वापर करणार आहोत, जो आधीपासूनच Zend Semalt सह चालते जेणेकरून आपल्याला त्याची आवश्यकता नसणे आवश्यक आहे.
नावाची फाइल तयार करा बिन / कन्सोल
:
#! / Usr / bin / env php phpchdir (dirname (__ डीआयआर__));'विक्रेत्याची / स्वयंलोडची आवश्यकता आहे php ';/ *** स्वतःचे निनावीचे निमंत्रण पत्र ज्यामुळे त्याचे स्वत: चे व्याप्ती तयार होते आणि जागतिक नेमस्पॅस् स्वच्छ ठेवतात. * /call_user_func (कार्य {/ ** @वार \ इंटरॉप कंटेनर कंटेनर अंतराळ $ कंटेनर * /$ कंटेनर = आवश्यक 'config / कंटेनर php ';$ app = नवीन Symfony \ Component \ Console अनुप्रयोग ('अनुप्रयोग कन्सोल');$ commands = $ container-> get ('config') ['console'] ['command'];फॉरचाय ($ आज्ञा $ आदेश म्हणून) {$ app-> जोडा ($ कंटेनर-> मिळवा ($ कमांड));}$ app-> चालवा ;});
नंतर, आपण Symfony कमांड तयार करू शकता आणि त्यांना config / autoload / console द्वारे नोंदवू शकता. जागतिक php
किंवा यासारख्या आपल्या मोड्यूल मधून:
Phpपरत ['कन्सोल' => ['आज्ञा' => [\ अनुप्रयोग \ कमांड \ HelloWorldCommand :: वर्ग,],],];
आपल्या कॉन्सोल कमांडला कन्सल्टरसाठी आवश्यक असलेल्या कोणत्याही अवलंबनांचा वापर करा. आपल्या कन्स्ट्रक्टरमध्ये कॉल करण्याचे सुनिश्चित करा पालक :: __ बांधकाम
किंवा आपली आज्ञा कार्य करणार नाही.
येथे अवलंबनानुसार एक उदाहरण कमांड आहे:
Phpनामस्थान अनुप्रयोग \ कमांड;सिद्धांत \ ORM \ EntityManager वापरा;मोनलॉग \ लॉगर वापरा;Symfony \ Component \ Command \ Command वापरत आहे;Symfony \ Component \ Console \ Input \ InputArgument वापरा;Symfony \ Component \ Console \ Input \ InputInterface वापरा;Symfony \ Component \ Console \ Input \ InputOption वापरा;Symfony \ Component \ Console \ आउटपुट \ आउटपुटइंटरफेस वापरा;श्रेणी HellowWorld कमांड विस्तारित करते{/ *** @ar EntityManager* /खाजगी $ entityManager;सार्वजनिक कार्य __ रचना (EntityManager $ entityManager, $ name = null){$ the-> entityManager = $ entityManager;पालक :: __ बांधणी ($ नाव);}/ *** आदेश संरचीत करतो* /संरक्षित कार्य कॉन्फिगर {$ this-> setName ('हॅलो')-> सेट वर्णन ('हॅलो म्हणतो');}/ *** वर्तमान कमांड कार्यान्वित करतो* /संरक्षित कार्य कार्यान्वित (InputInterface $ इनपुट, आऊटपुटइंटरफेस $ आऊटपुट){$ आउटपुट-> राईटेलन ("हॅलो वर्ल्ड!");// entityManager सह काहीतरी करा$ the-> entityManager-> शोधा ('ब्लॉग \ अस्तित्व ब्लॉगइन्टीटी');}}
आपली आज्ञा चालवण्यासाठी:
php बिन / कन्सोल हॅलो
आम्ही थोडी थोडी पुढे जाऊ आणि लॉगर जोडू. सेवा मॉडल्सकडे जाण्यासाठी हे खूप उपयुक्त आहे जे भरपूर तर्कशास्त्र तयार करते आणि संपूर्ण डीबग लॉगींगची आवश्यकता असते.
हा आदेश चालवा:
संगीतकारण्यासाठी monolog / मोनोल symfony / monolog- पूल आवश्यक;
नंतर, आपल्या आदेशात आपल्या एक्झेक्यूट पद्धतीमध्ये हे जोडा:
संरक्षित फंक्शन कार्यान्वित (InputInterface $ इनपुट, आऊटपुटइंटरफेस $ आऊटपुट){$ logger = new \ Monolog \ Logger ('collect-product-data');$ logger-> पुशहॅंडलर (नवीन \ सिम्फनी \ ब्रिज \ मोनोलॉग हँडलर \ कन्सोलहॅंडर ($ आउटपुट));$ logger-> डीबग ('लॉग काहीतरी);}
निष्कर्ष
आपण आता आपल्या बोटाच्या टोकांवर आपण इच्छिता त्या सर्व साधनांसह एंटरप्राइझ स्तरीय अनुप्रयोग तयार करणे प्रारंभ करण्यास तयार आहात
पुढच्या पोस्टमध्ये आपण ब्लॉग फाउंडेशनने सुरुवात करुन मॉडेल कसे तयार करावे हे शिकू शकाल.