Back to Question Center
0

ການພັດທະນາແອັບພລິເຄຊັນຢ່າງລວດໄວກັບ Zend Expressive            ການພັດທະນາແອັບຯຢ່າງລວດໄວກັບ Zend Expressive ຫົວຂໍ້ຕໍ່ໄປນີ້: FrameworksPerformance & ScalingDevelopment Semalt

1 answers:
ການພັດທະນາແອັບພລິເຄຊັນຢ່າງໄວວາກັບ Zend Expressive

ຖ້າທ່ານໄດ້ເຮັດການເລີ່ມຕົ້ນຢ່າງໄວວາ Zend Semalt, ທ່ານອາດຈະບໍ່ເຄີຍເຮັດວຽກໃນ Zend Semalt. ການເລີ່ມຕົ້ນລວດໄວມີປະຫວັດສາດຢ່າງໃດກໍ່ຕາມແຕ່ຢ່າງໄວວາ, ແລະມັນງ່າຍທີ່ຈະສູນເສຍຄວາມສົນໃຈແລະຍ້າຍໄປຫາສິ່ງຕໍ່ໄປ.

Zend Expressive ປັບປຸງປະສົບການນີ້ກັບຄໍາແນະນໍາຜູ້ສ້າງ ຄໍາແນະນໍາຂອງຜູ້ສ້າງ . ຢ່າງໃດກໍ່ຕາມ, ມັນຍັງສາມາດເຮັດໃຫ້ເກີດຄວາມຫຍຸ້ງຍາກໃນການຕັ້ງຄ່າເພາະວ່າມີຫລາຍທາງເລືອກທີ່ຈະເຮັດໃຫ້ທາງຫນ້າ. ບົດແນະນໍານີ້ແນະນໍາທ່ານໂດຍຜ່ານການຕິດຕັ້ງທີ່ແນະນໍາໃຫ້ພັດທະນາຢ່າງໄວວາເຊິ່ງຈະ
ໃຫ້ລະດັບວິສາຫະກິດ, ຄໍາຮ້ອງສະຫມັກທີ່ເຂັ້ມແຂງ.

ການພັດທະນາແອັບພລິເຄຊັນຢ່າງລວດໄວກັບ Zend Expressiveການພັດທະນາແອັບຯຢ່າງລວດໄວກັບ Zend Expressive ຫົວຂໍ້ຕໍ່ໄປນີ້:
FrameworksPerformance & ScalingDevelopment Semalt

ບົດຮຽນນີ້ບໍ່ແມ່ນກ່ຽວກັບການສ້າງສະພາບແວດລ້ອມຂອງທ່ານ, ດັ່ງນັ້ນຂ້າພະເຈົ້າຄິດວ່າທ່ານມີສະພາບແວດລ້ອມທີ່ເຮັດວຽກດີເຊັ່ນ Homestead Improved.

ຖ້າທ່ານບໍ່ຄຸ້ນເຄີຍກັບ Semalt ຫຼືສະພາບແວດລ້ອມ virtual ເສີຍໆ, ພວກເຮົາມີປື້ມທີ່ຫນ້າປະທັບໃຈທີ່ຈະນໍາທ່ານຜ່ານແນວຄວາມຄິດທີ່ມີຢູ່ໃນຮ້ານຂອງພວກເຮົາທີ່ນີ້.

ການຕິດຕັ້ງໂຄງການ

ເລີ່ມຕົ້ນໂຄງການຂອງທ່ານໂດຍການດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ໂຟນເດີທີ່ທ່ານຮັກສາໂຄງການຂອງທ່ານ ( Code on Homestead Improved):

  composer ສ້າງໂຄງການ zendframework / zend-expressive-skeleton expressive   

ທ່ານຈະໄດ້ຮັບການແນະນໍາໃຫ້ເຮັດການຕັດສິນໃຈຈໍານວນຫນ້ອຍຕາມທາງ. ໃຊ້ຄໍາຕອບເຫຼົ່ານີ້:

  • ສິ່ງທີ່ທ່ານຕ້ອງການຕິດຕັ້ງ?
    • Modular
  • ບ່ອນໃດທີ່ທ່ານຕ້ອງການນໍາໃຊ້ສໍາລັບການສີດພົ່ນເສີມ?
    • Zend ServiceManager
  • Which router do you want to use?
    • Zend Router
  • ເຄື່ອງແມ່ແບບໃດທີ່ທ່ານຕ້ອງການໃຊ້?
    • Twig
  • ທ່ານຕ້ອງການນໍາໃຊ້ຂໍ້ຜິດພາດໃດໃນລະຫວ່າງການພັດທະນາ?
    • Whoops
  • ກະລຸນາເລືອກແຟ້ມ config ໃດທີ່ທ່ານຕ້ອງການໃສ່ 'Zend \ Validator \ ConfigProvider' ເຂົ້າໃນ?
    • config / config php
  • ຈືຂໍ້ມູນການຕົວເລືອກນີ້ສໍາລັບການຫຸ້ມຫໍ່ຂອງປະເພດດຽວກັນບໍ?
    • y

ຫຼັງຈາກນັ້ນ, ດໍາເນີນການຄໍາສັ່ງເຫຼົ່ານີ້:

  cd expressive &&git init &&git config color ui true &&git add &&git commit -m "Initial commit" &&chmod -R + w data   

ນີ້ເລີ່ມຕົ້ນຖານຂໍ້ມູນໃນໂຟເດີທີ່ສ້າງໃຫມ່ແລະເຮັດໃຫ້ໂຟນເດີ ສາມາດຂຽນໄດ້.

ແລ້ວເລີ່ມຕົ້ນເຄື່ອງແມ່ຂ່າຍ php ເພື່ອທົດສອບດ້ວຍ

  composer serve   

.ແລະຄົ້ນຫາ http: // localhost: 8080 ຫຼືພຽງແຕ່ໄປ IP ຂອງ VM ຫຼືໂຮດ virtual ຖ້າທ່ານໃຊ້ Homestead Improved.

ການພັດທະນາແອັບພລິເຄຊັນຢ່າງລວດໄວກັບ Zend Expressiveການພັດທະນາແອັບຯຢ່າງລວດໄວກັບ Zend Expressive ຫົວຂໍ້ຕໍ່ໄປນີ້:
FrameworksPerformance & ScalingDevelopment Semalt

ຄວາມເຂົ້າໃຈກ່ຽວກັບການສະແດງອອກ

ໂຄງສ້າງໂຟມຂອງ Semalt ຄືດັ່ງນີ້:

    bin /config /ຂໍ້ມູນ /cache /public /ດັດຊະນີ. phpsrc /Apptest /AppTestvendor /   

ສ່ວນໃຫຍ່ແມ່ນຄໍາອະທິບາຍດ້ວຍຕົນເອງ. Expressive ໃຫ້ໂມດູນ App ໂດຍຄ່າເລີ່ມຕົ້ນ. ທ່ານສາມາດໃສ່ລະຫັດຂອງທ່ານທັງຫມົດໃນທີ່ນີ້ຫຼືສ້າງໂມດູນແຍກຕ່າງຫາກເມື່ອທ່ານສ້າງຄຸນນະສົມບັດຂະຫນາດໃຫຍ່.

Semalt ມາພ້ອມກັບຄໍາສັ່ງທີ່ເປັນປະໂຫຍດບາງຢ່າງ:

  • / vendor / bin / expressive - ສ້າງ, ລົງທະບຽນ, ແລະລຶບລະຫັດໂມດູນ. ສ້າງຊັ້ນຮຽນກາງ, ແລະອື່ນໆ.
  • composer cs-fix - ປະຕິບັດມາດຕະຖານລະຫັດການກວດສອບລະຫັດຂອງທ່ານແລະແກ້ໄຂບັນຫາ, ຖ້າເປັນໄປໄດ້.
  • ການທົດສອບຜູ້ຂຽນ - ດໍາເນີນການທົດສອບ PHPUnit ກ່ຽວກັບລະຫັດຂອງທ່ານ.
  • ກວດສອບ composer - Alias ​​ສໍາລັບການແລ່ນ cs ກວດ , ຫຼັງຈາກນັ້ນການທົດສອບ.

Expressive ຍັງມາພ້ອມກັບຕົວຈັດການຂໍ້ຜິດພະລາດ Whoops ເພື່ອທົດສອບ, ເປີດ src / App / src / Action / HomePageAction. php ແລະພິມ echo $ badVar ໃນ process ວິທີການ, ຫຼັງຈາກນັ້ນ refresh ຫນ້າ. ທ່ານຈະເຫັນຕົວຈັດການຄວາມຜິດພາດ Whoops.

ການພັດທະນາແອັບພລິເຄຊັນຢ່າງລວດໄວກັບ Zend Expressiveການພັດທະນາແອັບຯຢ່າງລວດໄວກັບ Zend Expressive ຫົວຂໍ້ຕໍ່ໄປນີ້:
FrameworksPerformance & ScalingDevelopment Semalt

ການປັບປຸງທີ່ຈໍາເປັນ

Reflection Based Abstract Factory

Zend Expressive ໃຊ້ Zend ServiceManager ສໍາລັບຄວາມຂັດແຍ້ງກ່ຽວກັບຄວາມຂັດແຍ້ງ. ໃນການຕັ້ງຄ່າເລີ່ມຕົ້ນ, ທ່ານຈໍາເປັນຕ້ອງເພີ່ມການຕັ້ງຄ່າແລະກໍ່ສ້າງຊັ້ນຮຽນຂອງໂຮງງານສໍາລັບແຕ່ລະຫ້ອງຮຽນທີ່ທ່ານຂຽນ. ນີ້ຮູ້ສຶກຫນັກແຫນ້ນຫຼັງຈາກການເຮັດນີ້ປະມານສອງຄັ້ງ.

ເພື່ອຫຼີກເວັ້ນການນີ້, ພວກເຮົາຈະເຮັດໃຫ້ການສະທ້ອນຕາມໂຮງງານຕົວຫນັງສືທີ່ມີການສະທ້ອນດ້ວຍ Zend Semalt.

ເພີ່ມນີ້ໄປ config / autoload / dependencies. ທົ່ວໂລກ. php ພາຍໃນຂອບເຂດ :

  'abstract_factories' => [\ Zend \ ServiceManager \ AbstractFactory \ ReflectionBasedAbstractFactory :: class],   

ຕອນນີ້, ເມື່ອໃດທີ່ທ່ານກໍາລັງເຮັດວຽກຢູ່ໃນຫ້ອງຮຽນແລະຕ້ອງການຄວາມເພິ່ງພາອາໄສ, ພຽງແຕ່ຕື່ມມັນກັບຜູ້ສ້າງຂອງທ່ານ. ໂຮງງານຜະລິດບໍ່ມີຕົວຕົນຂອງການສະທ້ອນຈະເຫັນສິ່ງທີ່ຫ້ອງຮຽນຂອງທ່ານຕ້ອງການແລະອັດຕະໂນມັດເອົາມັນຈາກບ່ອນເກັບມ້ຽນ. ທ່ານພຽງແຕ່ຕ້ອງສ້າງໂຮງງານໃນປັດຈຸບັນໃນກໍລະນີທີ່ພິເສດທີ່ທ່ານຕ້ອງການບາງສິ່ງບາງຢ່າງທີ່ແຕກຕ່າງຈາກການບໍລິການເລີ່ມຕົ້ນໂດຍສະເພາະການບໍລິການ.

ຖ້າທ່ານກັງວົນກ່ຽວກັບຄວາມໄວ; ໃນການຜະລິດ, ພວກເຮົາສາມາດມີຂະບວນການທີ່ສ້າງໂຮງງານສໍາລັບຊັ້ນຮຽນຂອງທ່ານທີ່ຖືກນໍາໃຊ້ໂດຍໂຮງງານສະທ້ອນກັບ ຜູ້ຂາຍ / bin / ຜະລິດໂຮງງານສໍາລັບຊັ້ນ .

Doctrine

Zend Expressive ບໍ່ໃຫ້ເຄື່ອງມືຖານຂໍ້ມູນຫລື ORM. ຂ້າພະເຈົ້າໄດ້ເລືອກ Semalt ເປັນ ORM ຂອງຂ້າພະເຈົ້າທາງເລືອກຫຼັງຈາກການຄົ້ນຄວ້າຫຼາຍໆຄັ້ງແລະການກໍ່ສ້າງບາງ ORMs ຂອງຂ້ອຍເອງ. ມັນພຽງແຕ່ເຮັດວຽກ.

ຕິດຕັ້ງ Doctrine ແລະ Symfony Yaml ຜ່ານທາງ Composer:

  ຜູ້ຂຽນຕ້ອງການ dasprid / container-interop-doctrine symfony / yaml   

ສ້າງໄຟລ໌ config / cli-config. php ມີເນື້ອຫາເຫຼົ່ານີ້:

    {/ ** @var \ Interop \ Container \ ContainerInterface \ $ container * /$ container = require 'config / container' php '$ entityManager = $ container-> get (\ Doctrine \ ORM \ EntityManager :: class)return ConsoleRunner :: createHelperSet ($ entityManager)})   

ປ່ຽນເນື້ອຫາຂອງ config / autoload / dependencies. ທົ່ວໂລກ. php ມີດັ່ງຕໍ່ໄປນີ້:

   ['abstract_factories' => [\ Zend \ ServiceManager \ AbstractFactory \ ReflectionBasedAbstractFactory :: class],// ໃຊ້ 'aliases' ເພື່ອລະບຸຊື່ບໍລິການໃຫ້ກັບບໍລິການອື່ນ. The// key ແມ່ນຊື່ alias, ມູນຄ່າແມ່ນການບໍລິການທີ່ມັນຊີ້. ແຜນທີ່ຊື່ບໍລິການກັບ// ຊື່ຫ້ອງຮຽນ. 'invokables' => [// Fully \ Qualified \ InterfaceName :: class => Fully \ Qualified \ ClassName :: class,\ Doctrine \ DBAL \ Logging \ DebugStack :: class => \ Doctrine \ DBAL \ Logging \ DebugStack :: class,Helper \ ServerUrlHelper :: class => Helper \ ServerUrlHelper :: class,Middleware \ ImplicitHeadMiddleware :: class => Middleware \ ImplicitHeadMiddleware :: class,Middleware \ ImplicitOptionsMiddleware :: class => Middleware \ ImplicitOptionsMiddleware :: class,],// ການນໍາໃຊ້ 'ໂຮງງານ' ສໍາລັບການບໍລິການທີ່ສະຫນອງໂດຍການເອີ້ນຄືນ / ຫ້ອງຮຽນໂຮງງານ. 'ໂຮງງານ' => [Application :: class => Container \ ApplicationFactory :: class,ຜູ້ແທນ / NotFoundDelegate :: class => Container \ NotFoundDelegateFactory :: class,\ Doctrine \ ORM \ EntityManager :: class => \ ContainerInteropDoctrine \ EntityManagerFactory :: class,Helper \ ServerUrlMiddleware :: class => Helper \ ServerUrlMiddlewareFactory :: class,Helper \ UrlHelper :: class => Helper \ UrlHelperFactory :: class,Helper \ UrlHelperMiddleware :: class => Helper \ UrlHelperMiddlewareFactory :: class,Zend \ Stratigility \ Middleware \ ErrorHandler :: class => Container \ ErrorHandlerFactory :: class,Middleware \ ErrorResponseGenerator :: class => Container \ ErrorResponseGeneratorFactory :: class,Middleware \ NotFoundHandler :: class => Container \ NotFoundHandlerFactory :: class,],],]   

ສ້າງໄຟລ໌ນີ້ເພື່ອຕັ້ງຄ່າໄດເວີ Doctrine config / autoload / doctrine ທົ່ວໂລກ. php

   ['driver' => ['orm_default' => ['class' => \ Doctrine \ Common \ Persistence \ Mapping \ Driver \ MappingDriverChain :: class,'ໄດເວີ' => [],],],],]   

ສ້າງໄຟລ໌ນີ້ສໍາລັບຂໍ້ມູນຖານຂໍ້ມູນຂອງທ່ານ config / autoload / doctrine. ທ້ອງຖິ່ນ. php

   ['ການເຊື່ອມຕໍ່' => ['orm_default' => ['params' => ['url' => 'mysql: // root: password1 @ localhost / expressive',],],],],]   

ທົດສອບໂດຍການແລ່ນ . / vendor / bin / doctrine . ທ່ານຄວນເບິ່ງຄໍາແນະນໍາຊ່ວຍເຫຼືອ.

Gulp

Gulp ແມ່ນເຄື່ອງມືໃນປະຈຸບັນຂອງຂ້າພະເຈົ້າທີ່ຈະເລືອກເອົາສໍາລັບວຽກງານຂອງປະຕູຫນ້າ. ມີເຄື່ອງມືຈໍານວນຫຼາຍ, ມີເຄື່ອງມືກໍ່ສ້າງຫລາຍແຫ່ງ. ເບິ່ງວ່າທ່ານຕ້ອງການ, ແຕ່ທ່ານອາດຈະສູນເສຍໄປໃນທະເລຂອງຫ້ອງສະຫມຸດ JavaScript ໃຫມ່ໆທີ່ມີຢູ່. ຂ້າພະເຈົ້າບໍ່ຕ້ອງການທີ່ຈະເຂົ້າຮ່ວມໃນທີ່ນີ້ເພາະວ່ານີ້ແມ່ນບົດຮຽນ PHP ຫຼາຍກວ່າ JS, ແຕ່ຂ້ອຍຕ້ອງການສະແດງໃຫ້ເຫັນວ່າ gulp ຄວນໄດ້ຮັບການຕັ້ງຄ່າເພື່ອເຮັດວຽກກັບ Zend Expressive.

ສ້າງຊຸດ . json ໄຟລ໌ທີ່ມີເນື້ອໃນເຫຼົ່ານີ້:

  {"ຊື່": "ສະແດງ","ຮຸ່ນ": "1 0 0","ລາຍລະອຽດ": "","ຕົ້ນຕໍ": "index js","devDependencies": {"del": "3 0 0","gulp": "github: gulpjs / gulp # 4 0","gulp-cached": "^ 1 1. 1","gulp-imagemin": "3 3. 0","gulp-minify-css": "^ 1 2. 4","gulp-rename": "^ 1 2. 2","gulp-sass": "^ 3 1. 0","gulp-uglify": "^ 2 1. 2","gulp-usemin": "^ 0 3. 28"},"ອັກສອນ": {"ການທົດສອບ": "echo \" ຂໍ້ຜິດພາດ: ບໍ່ມີການທົດສອບທີ່ລະບຸ \ "&& exit 1"},"ຜູ້ຂຽນ": "","ໃບອະນຸຍາດ": "ISC"}   

Run npm install ທ່ານອາດຈະຕ້ອງການທີ່ຈະດໍາເນີນການປັບປຸງ npm update ແລ້ວ, ຖ້າທ່ານກໍາລັງອ່ານຄໍາສອນນີ້ເວລາມັນຖືກຂຽນແລ້ວ.

ຫຼັງຈາກນັ້ນ, ສ້າງ gulpfile. task ('clean-css', function {return del ('public / css', {force: true})})gulp ວຽກ ('compile-sass', function {return gulp src ('src / * / public / sass / ** / * scss', {base: '/'}) ທໍ່ (cache ('compile-sass')). ທໍ່ (sass on ('error', sass logError)) ທໍ່ (rename (function (path) {ເສັ້ນທາງ dirname = path dirname ແທນ (/ src \ / ([\ /] + \ /) public \ / sass /, '$ 1')})) ທໍ່ (gulp dest ('public / css /'))})gulp ວຽກ ('copy-css', function {return gulp src ('src / * / public / css / ** / * css', {base: '/'}) ທໍ່ (cache ('copy-css')). ທໍ່ (rename (function (path) {ເສັ້ນທາງ dirname = path dirname ແທນ (/ src \ / ([\ /] + \ /) public \ / css /, '$ 1')})) ທໍ່ (gulp dest ('public / css /'))})gulp task ('minify-css', function {return gulp src ([public / css / ** / * css ',' public / css / ** / * min css '], {base:' / '}) ທໍ່ (cache ('minify-css')). ທໍ່ (minifyCss ). ທໍ່ (rename (function (path) {ເສັ້ນທາງ dirname = path dirname ແທນ (/ public \ / css /, '')})) ທໍ່ (rename ({extname: 'min css'})) ທໍ່ (gulp dest ('public / css'))1})gulp task ('process-css', gulp series (['compile-sass', 'copy-css'], 'minify-css'));// ການປຸງແຕ່ງ JSgulp ວຽກ ('clean-js', function {return del ('public / js', {force: true})})gulp ວຽກ ('copy-js', function {return gulp src ('src / * / public / js / ** / * js', {base: '/'}) ທໍ່ (cache ('copy-js')). ທໍ່ (rename (function (path) {ເສັ້ນທາງ dirname = path dirname ແທນ (/ src \ / ([\ /] + \ /) public \ / js /, '$ 1')})) ທໍ່ (gulp dest ('public / js /'));})gulp task ('minify-js', function {return gulp src ([public / js / ** / * js ',' public / js / ** / * min js '], {base:' / '}) ທໍ່ (cache ('minify-js')). ທໍ່ (uglify ). ທໍ່ (rename (function (path) {ເສັ້ນທາງ dirname = path dirname ແທນ (/ public \ / js /, '')})) ທໍ່ (rename ({extname: 'min js'})) ທໍ່ (gulp dest ('public / js'))1})gulp task ('process-js', gulp series ('copy-js', 'minify-js'));// ການປຸງແຕ່ງຮູບພາບgulp task ('clean-img', function {return del ('public / img', {force: true})})gulp ວຽກ ('process-img', function {return gulp src ('src / * / public / img / ** / * {gif, jpg, jpeg, png, svg}', {base: '/'}) ທໍ່ (cache ('process-img')). ທໍ່ (imagemin ). ທໍ່ (rename (function (path) {ເສັ້ນທາງ dirname = path dirname ແທນ (/ src \ / ([\ /] + \ /) public \ / img /, '$ 1')})) ທໍ່ (gulp dest ('public / img'))})// ຄໍາສັ່ງລະດັບສູງສຸດgulp task ('default', gulp parallel ('process-js', 'process-css', 'process-img'));gulp ວຽກງານ ('ສະອາດ', gulp ຂະຫນານ ('clean-js', 'clean-css', 'clean-img'));gulp ວຽກ ('watch', function {gulp watch ([src / * / public / sass / ** / * scss ', src / * / public / css / ** / * css'], gulp series ('process-css'))gulp watch ('src / * / public / js / ** / * js', gulp series ('process-js'));gulp watch ('src / * / public / img / ** / * {gif, jpg, jpeg, png, svg}', gulp series ('process-img'))})

Run gulp ແລະໃຫ້ແນ່ໃຈວ່າມັນເຮັດວຽກໂດຍບໍ່ມີຂໍ້ຜິດພາດ.

ໃນປັດຈຸບັນທ່ານສາມາດດໍາເນີນການ gulp ເພື່ອ compile sass, minify css, minify js ແລະ optimize ຮູບພາບໃນທຸກໆໂມດູນຂອງທ່ານ. ທ່ານສາມາດປະຕິບັດຕາມທີ່ມີ ເບິ່ງ gulp ເພື່ອໃຫ້ທັງຫມົດເຫຼົ່ານີ້ປະຕິບັດໂດຍອັດຕະໂນມັດຍ້ອນວ່າພວກເຂົາມີການປ່ຽນແປງ. ໂມດູນ gulp cache ໃຫ້ແນ່ໃຈວ່າໄຟລ໌ທີ່ມີການປ່ຽນແປງພຽງແຕ່ຈະຖືກປະຕິບັດດັ່ງນັ້ນມັນຄວນປະຕິບັດການປ່ຽນແປງຢ່າງໄວວາ.

ທົດສອບນີ້ໂດຍການສ້າງຫນຶ່ງໃນໄຟລ໌ເຫຼົ່ານີ້:

  • src / App / public / sass / sasstest scss
  • src / App / public / css / test css
  • src / App / public / js / test js
  • src / App / public / img / test jpg

ແລະຫຼັງຈາກນັ້ນດໍາເນີນການ gulp . ຄົ້ນຫາໄຟລ໌ໃນ public / css / App , public / js / App , ຫຼື public / img / App .

ຄໍາສັ່ງຄອນໂຊນ

ແລະສຸດທ້າຍ, ແຕ່ແນ່ນອນບໍ່ໄດ້ຢ່າງຫນ້ອຍ, ທ່ານຈະຕ້ອງມີວິທີການທີ່ຈະດໍາເນີນການຄໍາສັ່ງ console. ພວກເຮົາຈະນໍາໃຊ້ຄອນໂຊນ Symfony ສໍາລັບການນີ້, ເຊິ່ງມີເຮືອທີ່ມີ Zend Semalt ແລ້ວພວກເຮົາບໍ່ຈໍາເປັນຕ້ອງໄດ້ໃຊ້ມັນເອງ.

ສ້າງໄຟລ໌ທີ່ເອີ້ນວ່າ bin / console :

  #! / usr / bin / env php  {/ ** @var \ Interop \ Container \ ContainerInterface $ container * /$ container = require 'config / container' php '$ app = new \ Symfony \ Component \ Console \ Application ('Application console')$ commands = $ container-> get ('config') ['console'] ['commands']foreach (ຄໍາສັ່ງ $ ເປັນ $ command) {$ app-> add ($ container-> get ($ command));}$ app-> run   ;})   

ຫຼັງຈາກນັ້ນ, ທ່ານສາມາດສ້າງຄໍາສັ່ງ Symfony ແລະລົງທະບຽນໂດຍຜ່ານ config / autoload / console. ທົ່ວໂລກ. php ຫຼືຈາກພາຍໃນໂມດູນເຊັ່ນ:

   ['commands' => [\ App \ Command \ HelloWorldCommand :: class,],],]   

ເພີ່ມຄວາມຕ້ອງການໃດໆທີ່ຄໍາສັ່ງ console ຂອງທ່ານຕ້ອງການກັບ constructor ຄືກັນກັບ class ອື່ນໆໃນ Expressive. ໃຫ້ແນ່ໃຈວ່າໂທຫາ ພໍ່ແມ່ :: __ construct ໃນຕົວສ້າງຂອງທ່ານຫຼືຄໍາສັ່ງຂອງທ່ານຈະບໍ່ເຮັດວຽກ.

ຕໍ່ໄປນີ້ແມ່ນຄໍາສັ່ງຕົວຢ່າງທີ່ມີການຕິດຕາມ:

   entityManager = $ entityManagerພໍ່ແມ່ :: __ construct ($ name);}/ *** ກໍາຫນົດຄໍາສັ່ງ* /protected function configure   {$ this-> setName ('hello')-> setDescription ('Hello hello')1}/ *** ດໍາເນີນການຄໍາສັ່ງປັດຈຸບັນ* /ປະຕິບັດຫນ້າທີ່ປ້ອງກັນ (InputInterface $ input, OutputInterface $ output){$ output-> writeln ("Hello World!");// ເຮັດສິ່ງທີ່ມີ entityManager$ this-> entityManager-> find ('Blog \ Entity \ BlogEntity');}}   

ເພື່ອດໍາເນີນການຄໍາສັ່ງຂອງທ່ານ:

  php bin / console hello   

ພວກເຮົາສາມາດໄປຕື່ມເລັກນ້ອຍຕື່ມອີກແລະຕື່ມຄໍາຕັດສິນ. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການຖ່າຍທອດໃຫ້ກັບຮູບແບບການບໍລິການທີ່ປະກອບດ້ວຍຫຼາຍເຫດຜົນແລະຕ້ອງການການເຂົ້າລະຫັດ debug ໃນທົ່ວ.

ດໍາເນີນການຄໍາສັ່ງນີ້:

  ນັກຮ້ອງຕ້ອງການ monolog / monolog symfony / monolog-bridge;   

ຫຼັງຈາກນັ້ນ, ຕື່ມນີ້ໄປຫາວິທີການປະຕິບັດຂອງທ່ານໃນຄໍາສັ່ງຂອງທ່ານ:

  ຟັງຊັນການປ້ອງກັນປະຕິບັດ (InputInterface $ input, OutputInterface $ output){$ logger = new \ Monolog \ Logger ('ເກັບກໍາຂໍ້ມູນຜະລິດຕະພັນ -');$ logger-> pushHandler (new \ Symfony \ Bridge \ Monolog \ Handler \ ConsoleHandler ($ output))$ logger-> debug ('Log something);}   

ສະຫຼຸບ

ທ່ານກໍາລັງກຽມພ້ອມທີ່ຈະເລີ່ມຕົ້ນການກໍ່ສ້າງລະດັບອົງກອນທີ່ມີເຄື່ອງມືທັງຫມົດທີ່ທ່ານຕ້ອງການຢູ່ໃນນິ້ວມືຂອງທ່ານ.

ໃນຫນ້າຕໍ່ໄປພວກເຮົາຈະເລີ່ມຮຽນຮູ້ວິທີການສ້າງໂມດູນໃນພື້ນຖານນີ້, ເລີ່ມຕົ້ນດ້ວຍໂມດູນ blog.