Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Paggawa ng Inyong Panimula: diskartehan ang mga Major na Feature Pagandahin

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Securing an API
Using Faker to Generate Filler Data for Automated Testing

Tagalog (Wikang Tagalog) translation by Anna Nelson (you can also view the original English article)

Final product image
What You'll Be Creating

Ang tutorial na ito ay bahagi ngserye tungkol sa pagbuo ng iyong startup gamit ang PHP sa Envato Tuts+. Sa seryeng ito, gagabayan ko kayo sa paglulunsad ng isang startup mula sa konsepto sa kasalukuyan gamit ang aking Meeting Planner app bilang isang makatotohanan na halimbawa. Bawat hakbang sa kahabaan ng proseso, ibibigay ko ang open-source code ng aking Meeting Planner app bilang halimbawa kung saan maaari mong malaman ang pinagmulan. Tatalakayin ko din angmga isyu tungkol sa negosyo kung meron tayong madaanan.

Paano diskartehan ang mga Major na Feature Update

Nitong mga nakalipas na araw kadalasan ay nagtatrabaho ako upang magdagdag ng maliit na incremental pagsasaayos sa aking Meeting Planner. Gumagana naman ang mga basic at sinusubukan ko mgdagdag unti-unti para mapaganda ang application base sa aking pananaw at puna ng mga tao.  Kung minsan, ang aking pangarap ay para sa isang mas malaking pagbabago, at ito ngayon ay maaaring maging mas mahirap na dahil ang codebase ay masyado na lumago.

Sa tutorial ngayon, ang aking tatalakayin ay tungkol sa mga paraan kung paano mag-isip para makagawa ng mga mas malaking mga pagbabago sa isang umiiral na codebase. Sa partikular,  ituturo sa iyo ang mga epekto ng pagdagdag ng kakayahan para sa pagtugon sa mga kalahok para magisip ng mgkakasama at magpasya sa mga gawain, ibig sabihin, ano ang dapat nating gawin kapag nagkikita.

Kung hindi mo pa nagagawa, subukan na mag-iskedyul ng isang pulong, at ngayon ay maaari mo ring mag-iskedyul ng aktibidad. Matutulungan ka nitong maunawaan kung paano sa pamamagitan ng tutorial na ito.

Bago namin simulan, huwag kalimutan na ibahagi ang iyong mga komento at puna sa ibaba. Sinusubaybayan ko ang mga ito, at maaari mo ring maabot ako Twitter @lookahead_io. Mas lalo akong interesado kung nais mo magmungkahi ng mga bagong tampok o mga paksa para sa hinaharap na mga tutorial.

Bilang paalala, ang lahat ng mga code para sa Meeting Planner ay nakasulat sa Yii2 Framework para sa PHP. Kung gusto mong matuto nang iba pa tungkol sa Yii2, tingnan ang aming parallel series Programming Sa Yii2.

Ang Aktibidad Planning Tampok

Building Startups - Approaching Major Features - Planning an Activity page

Talaga, Meeting Planner at Simpleng Planner ay dinisenyo upang gumawa ng pag-iiskedyul ng kasing-dali ng ito ay maaaring maging. Imungkahi sa iyo ng ilang oras at lugar at ibahagi ito sa isa pang tao para sa kanila upang timbangin in sa mga pagpipilian. Pagkatapos, magpasya ka na magkakasama, at Tagaplano ng Meeting Sinusubaybayan na may mga entry sa kalendaryo, mga paalala at mga simpleng paraan upang gumawa ng mga pagsasaayos pagkatapos ng katotohanan.

Bilang halimbawa, narito ang isang video ng pag-iiskedyul ng para sa mga grupo:

Nais kong palawakin ang pag-iiskedyul ng suporta na ibinigay para sa oras at lugar na ang konsepto ng mga gawain. Halimbawa, kapag pagpaplano ng isang meetup sa iyong mga kaibigan, mahalagang kayo ay humihiling, dapat naming pumunta sa mga pelikula, magsayaw o snowboarding.

Sa ibang salita, nais kong lumikha ng isang panel tulad ng isa para sa mga oras na ipinapakita sa ibaba ngunit para sa mga aktibidad:

Building Startups - Approaching Major Features - The Older Plan a Time Panel

Ang MVC architecture at ang aking code pagpapangalan scheme ay katulad na katulad sa pagitan ng mga oras ng pagpupulong at mga lugar, kaya gusali na gawain tila medyo simpleng sa ibabaw. Gayunpaman, ang desisyon na gawin ito ay may malawak na ramifications.

Ang Pagtingin sa mga Pagbabago

Mahalaga kapag magdadagdag ng isang malaking tampok ay isipin kung saan ilalagay ang code na kailangang baguhin at ang lahat ng mga lugar sa iyong application na maaaring maapekyuhan sa gagawing pagbabago.

Epekto sa pagharap sa customer

Mula sa anggulo ng disenyo,inisip ko kung paano makakaapekto ang mga gawain sa mga serbisyong humaharap sa customer:

  • Babaguhin nito ang pag-aayos ng isang pulong upang payagan ang isang bagong uri, ang isang aktibidad na hinihimok ng kaganapan. Magkakaroon ng dagdag na panel sa pahina ng pagpaplano.
  • Ang panel na aktibidad ay kailangang dinisenyo upang payagan ang mga tao upang pumili mula sa mga default o i-customize at idagdag ang kanilang mga sarili, hal backcountry skiing sa halip na lamang skiing, "Manuod ng Star Wars Rogue One" sa halip na "Manuod ng isang pelikula."
  • Ang mga imbitasyon sa Email at kailangang meron ng puwang para sa listahan ng pagpipilian na aktibidad.
  • Mga kaganapan sa kalendaryo ay nais na isama sa napiling aktibidad sa mga paksa ng meetup.
  • Ang mga nagtatag ay maaaring mag nais na magpadala ng ilang mga ideya ng aktibidad sa isang kaibigan o isang pangkat na wala pang pinipiling isang lugar, kailangan ko payagan ito. Sa kasalukuyan, ang sistema ay hindi nagpapahintulot na magpadala ng imbitasyon hanggang sa magkaroon ng oras at lugar iminungkahing.
  • Kung ang isang tao ay humiling ng isang pagbabago sa isang pulong, ang suporta para sa mga kahilingan sa pagbabago ay kailangang may suporta sa mga gawain kung ito ay pinalawak.

Ang mga ito ang karamihan sa mga pangunahing kaalaman. Ngayon, isipin natin ang tungkol sa code.

Epekto ng Codes

Pagsanga ng Source Code 

Madalas, makakatulong magpalago ng iyong sariling code sa GitHub para maaari kang gumawa ng bagong tampok habang nagtatatag na produksyon sa antas ng codebase.  Pinapayagan ka nito na bumalik at ayusin ang mga bug o gumawa ng mas maliit na incremental pagbabago habang nagtatrabaho sa isang malaking pagbabago. Ang mga tao sa GitHub ay mahigpit upang makatiyak na maintindihan ang kahalagahan ng mga koponan:

Mayroon lamang isang panuntunan: ang anumang bagay sa master branch ay laging deployable.

Dahil ako ay nagiisa lamang at ako ay medyo magaling sa pamamahala ng aking codebase, ako ay medyo walang pakialam sa panuntunang ito.

Ngunit ang pagsanga ng code ay kapaki-pakinabang para sa pagsusuri ng mga pagbabago sa code kapag ikaw ay handa ng subukan ito. Magpapakita ako ng isang demonstration tungkol dito sa dulo ng tutorial ngayon.

Paggaya sa Common Code

Magkakaroon ng dalawang uri ng mga pulong ngayon: mga batay sa mga petsa at oras at ang mga nakapaligid na mga gawain, mga petsa, at oras. Kaya ang pulong ng modelo ay kailangang iangkop.

Para sa oras at lugar, may mga partikular na mga modelo MeetingTime at MeetingPlace pati na rin ang mga modelo para sa mga kagustuhan para sa mga sa mga kalahok, na tinatawag na MeetingTimeChoices at MeetingPlaceChoices. Maaari mong basahin ang higit pa tungkol sa pagbuo nito sa Building Your Startup With PHP: Scheduling Availability and Choices.

Kaya ang pagdaragdag ng mga gawain ay kailangan na doblehin ito, paglikha ng MeetingActivity at MeetingActivityChoices at ng kanilang kasamang controllers, mga modelo, mga tanawin, JavaScript at Ajax at database ng paglilipat.

Settings para sa Account at Meeting 

Gayundin, ang mga organizers ay may preference ng iba't-ibang mga setting ng account at bawat setting para maaaring magmungkahi at pumili ang mga kalahok ng aktibidad sa pagpupulong.

Email Templates

Ang pagdagdag ng mga gawain ay makaka apekto sa mga template ng email para sa mga imbitasyon at nakumpleto pulong.

Kasaysayan at Logs ng Events 

Dahil ang bawat pagbabago sa isang pulong ay naka-log, ang bawat pagpipilian na aktibidad at pagbabago ay kailangan din naka-log.

Iba pang mga Sari-saring Areas

Ang .ics Calendar file ay dapat na mabago upang isama ang aktibidad. Sa paglaon, ang API ay kailangang ma-update-at kahit na ang mga istatistika para sa administrative dashboard.

Habang ito ay tila simple kung titignant, ang pagdaragdag ng mga gawain ay talagang kinakailangan ng maraming bagong code at pagsubok.

Coding Highlights

Habang masyadong maraming bagong code para pagusapan sa isang tutorial, hana sa pamamagitan ng naka-highlight na mga aspeto mula sa ilan sa mga konsepto sa itaas.

Database Migrations

Una, nilikha ko ang database migrations. Kanina ay nabanggit ko ang paggaya sa code na merong mgkaparehong tampok na aspeto. Narito ang isang halimbawa ng MeetingActivity migration kumpara sa mga mas lumang mga MeetingTime table migration:

Narito ang MeetingTime migration, at maaari mong makita ang pagkakatulad:

Sa huli, kailangan ko ng lima para sa mga sumusunod na bagong talahanayan:

  1. m161202_020757_create_meeting_activity_table
  2. m161202_021355_create_meeting_activity_choice_table, para sa pag-iimbak ng mga kagustuhan availability ng bawat kalahok pulong para sa bawat aktibidad
  3. m161202_024352_extend_meeting_setting_table_for_activities para sa mga setting ng isang partikular na pulong para sa pagdaragdag o pagpili ng mga gawain
  4. m161202_024403_extend_user_setting_table_for_activities para sa default na mga settingng account
  5. m161203_010030_extend_meeting_table_for_activitiesat para sa pagdaragdag is_activity upang tukuyin ang ari-arian ng isang pulong na may o walang isang aktibidad

Building MVC Framework para sa mga gawain

Building Startups - Approaching Major Features - The Gii Scaffolding Menu

Ginamit ko ang kakayahan ng Yii Gii scaffolding na lumikha ng modelo, controller, at paunang mga tanawin. Tinalakay ko dati ang mga paglilipat at Gii mas maaga sa serye.

JavaScript at jQuery Pagbabago

At mayroon din namang matibay na pandagdag sa JavaScript at jQuery ginagamit, lalo na ngayon na nakikipag-ugnayan sa mga elemento ng pagpaplano para sa isang pulong na tapos na ay gumagamit ng Ajax, nang hindi na kailangan i-refresh ang pahina.

Dito, halimbawa, ay ang code loop upang makita kung ang isang pulong ng oras ay napili:

Sa pamamagitan ng paggamit ng isang pangkaraniwang scheme para sa pagpapangalan, ang pagsulat ng code para sa mga aktibidad ay replicable mula sa:

Iba pang mga pag-andar, tulad ng mga na ipakita ang mga tugon sa mga gumagamit, kailangan lang upang patagalin para sa mga aktibidad:

Kahit na may tampok na kaya reflective sa katangian ng umiiral nang mga tampok, ang mga karagdagan ng bagong code ay malawak.  Narito ang higit pa sa mga JavaScript, halimbawa. Ang code na ito ay sumasaklaw ng maraming higit pa sa mga interactive na pag-andar ajax ng beses pagtugon sa pahina sa pagpaplano:

Framework karagdagan

Tiyak, mayroong mga modelo, controllers at mga pagtingin na nagkaroon na idaragdag. Narito ang isang sipi mula sa modelo ng MeetingActivity.php na naglilista ng isang bilang ng mga default na aktibidad ang user ay maaaring gumamit ng mabilis na Typeahead:

Building Startups - Approaching Major Features - Activity Typeahead List

At narito ang isang sipi ng /frontend/views/activity/_form.php sa TypeaheadBasic widget gamit ang nasa itaas na defaultActivityList () :

Ngunit maraming mga pagbabago sa code sa labas ng mga karaniwang pangangailangan ng framework. Narito ang canSend() modelo ng Meeting.php, ang function na tumutukoy kung ang user ay pinapayagan upang magpadala ng isang imbitasyon para sa isang pulong.  Tinutukoy nito kung ang isang pulong ay nakamit ang minimum na mga kinakailangan para sa pagpapadala, tulad ng pagkakaroon ng isang oras at aktibidad o oras at lugar.

Sa ibaba, maaari mong makita kung paano ang isang bagong seksyon ay maidagdag para sa mga aktibidad:

Email Template

Ang pag-update sa mga layout ng email ay nangailangan ng konting pagiisip tungkol sa disenyo at kung paano pinakamahusay ipapakita ang mga gawain sa pagtugon sa mga paanyaya at mga pagkumpirma. Narito ang isang sample ng mga update ng email na imbitasyon:

Building Startups - Approaching Major Features - Email Invitation Theme

Mahalaga, kung ang isang pulong ay isang aktibidad, pagkatapos ay ang imbitasyon ay nagsasama ng isang malawak na hanay sa itaas ng oras at lugar, muli kinokopya ng isang pulutong ng mga umiiral na code para sa mga oras at lugar:

Na sumasalamin sa Pagbabago

Sa paglaon, ang tampok na aktibidad ay nangangailangan ng isang malaking bagong sangay ng code. Narito ang mga pull request:

Ito ay malaki kaya nagpasya ako na gumawa ng isang nakatutuwang video ng pag-scroll sa lahat ng mga pagbabago sa GitHub na may kasamang naaangkop na musikang tumutugtog sa background ... enjoy:

Sa pangkalahatan, ang pagtatayo ng mga aktibidad na tampok ay mahirap at kapaki-pakinabang para sa akin ang mag-isip tungkol sa site architecture at kung paano gumawa ng mabilis, matatag na pag-unlad sa codebase ng start-up na pang isang-tao. Gamitin paggaya, ngunit pagisipan muna ang pangkalahatang saklaw.

Ang tampok na aktibidad ay ngtalakay ng higit pang mga lugar kaysa sa inaasahan ko.

Ang pagpaplano nang maaga ay makakatulong sa iyo para maiwasan ang pagkakaipit sa walang katapusang coding traps para sa mga bagong tampok.  Kung ikaw ay malagay sa isang malalim na kanal, isang bangungot ng coding na parang hindi natatapos, i-check mga pagbabago sa iyong mga tampok branch, bumalik sa master, at gumawa ng ibang bagay. Ito ay nakakatutulong upang ma-clear ang iyong ulo.

Ako ay bahagyang naiba ng diskarte sa paggabay sa iyo sa episode na ito, at Umaasa ako na ito ay kapaki-pakinabang.

Magkaroon ka bang mga sariling mga saloobin? Mga ideya? Feedback? Maaari mo akong maabot sa akin Twitter @lookahead_io direkta. Abangan ang ibang mga susunod na tutorial dito sa Building Your Startup With PHP series. Madami pang mga nakakagulat na bagay.

Muli, kung hindi mo pa nasubukan ang Meeting Planner o Simple Planner, sige at iiskedyul ang iyong unang pulong:

Related Links

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.