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

Bangun Startup Anda: Mendekati Penambahan Ffitur Utama

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

Indonesian (Bahasa Indonesia) translation by Muhammad Gufron (you can also view the original English article)

Final product image
What You'll Be Creating

Tutorial ini adalah bagian dari Bangun Startup Anda dengan PHP series di Envato Tuts +. Dalam seri ini, saya sedang membimbing Anda melalui peluncuran startup dari konsep realitas menggunakan Meeting Planner app sebagai contoh kehidupan nyata. Setiap langkah di sepanjang tutorial, saya akan merilis kode Meeting Planner sebagai contoh open-source yang dapat anda pelajari. Saya juga akan membahas masalah bisnis terkait startup saat muncul.

Cara Pendekatan Besar Fitur Update

Hari ini saya paling sering bekerja untuk menambah sedikit peningkatan pada Meeting Planner. Dasar-dasar bekerja dengan baik, dan saya mencoba untuk secara bertahap meningkatkan aplikasi berbasis pada visi saya dan umpan balik orang-orang. Kadang-kadang, visi saya adalah untuk perubahan besar, dan itu bisa sulit sekarang bahwa codebase telah menjadi begitu banyak.

Dalam tutorial hari ini, saya akan berbicara tentang cara berpikir tentang membuat perubahan yang lebih besar pada basis kode yang ada. Secara khusus, saya akan memandu anda melalui dampak penambahan kemampuan untuk bertemu dengan peserta untuk melakukan brainstorming dan memutuskan kegiatan secara bersama-sama, yaitu apa yang harus kita lakukan ketika kita bertemu.

Jika anda belum, cobalah untuk menjadwalkan rapat, dan sekarang anda juga bisa menjadwalkan kegiatan. Ini akan membantu anda memahami ketika anda mengikuti tutorial.

Sebelum kita mulai, Harap ingat untuk berbagi komentar dan feedback di bawah ini. Saya memonitornya, dan anda juga bisa menghubungi saya di Twitter @lookahead_io. Saya terutama tertarik jika anda ingin menyarankan fitur baru atau topik kedepan untuk tutorial.

Sebagai pengingat, semua kode untuk Meeting Planner ditulis dalam Framework Yii2 untuk PHP. Jika anda ingin mempelajari lebih lanjut tentang Yii2, periksa seri paralel Pemrograman Dengan Yii2.

Fitur Perencanaan Kegiatan

Building Startups - Approaching Major Features - Planning an Activity page

Pada dasarnya, Meeting Planner dan Simple Planner dirancang untuk membuat penjadwalan semudah mungkin. Anda mengajukan beberapa kali dan tempat dan membaginya dengan satu orang lagi agar mereka mempertimbangkan pilihannya. Kemudian, anda memutuskan bersama, dan Meeting Planner mencatat dengan entri kalender, pengingat dan cara sederhana untuk membuat penyesuaian setelah terjadi.

Sebagai contoh, berikut adalah video penjadwalan untuk kelompok:

Saya ingin memperluas dukungan penjadwalan yang disediakan untuk waktu dan tempat untuk konsep kegiatan. Misalnya, ketika merencanakan pertemuan dengan teman-teman Anda, Anda pada dasarnya bertanya, sebaiknya kita pergi ke bioskop, pergi menari atau snowboarding.

Dengan kata lain, saya ingin membuat panel seperti yang diperlihatkan di bawah ini tetapi untuk kegiatan:

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

Arsitektur MVC dan skema penamaan kode saya sangat mirip antara waktu dan tempat pertemuan, sehingga aktivitas bangunan tampak cukup sederhana di permukaan. Namun, keputusan untuk melakukannya memiliki konsekuensi yang luas.

Scoping Perubahan

Ini penting ketika menambahkan fitur besar untuk berpikir baik tentang di mana kode perlu diubah dan juga semua tempat di aplikasi Anda yang mungkin terpengaruh untuk memikirkan dampaknya.

Dampak yang Menghadapi Pelanggan

Dari sisi desain, saya berpikir tentang bagaimana kegiatan akan memengaruhi layanan yang dihadapi pelanggan:

  • Ini akan mengubah mengatur pertemuan untuk memungkinkan tipe baru, activity-driven event. Akan ada sebuah panel tambahan pada halaman perencanaan.
  • Panel aktivitas perlu dirancang untuk memungkinkan orang memilih dari default atau untuk menyesuaikan dan menambahkan sendiri, mis. pedalaman ski bukan hanya ski, 'Pergi Nonton Star Wars Rogue One' bukan hanya 'Pergi Nonton Film.'
  • Email undangan harus menyertakan ruang untuk daftar pilih kegiatan.
  • Kalender event akan digunakan untuk mengintegrasikan kegiatan pilihan dengan subjek meetup.
  • Penyelenggara mungkin ingin mengirim beberapa ide kegiatan ke teman atau grup tanpa memilih tempat, jadi saya harus memperbolehkannya. Saat ini, sistem tidak mengizinkan anda mengirim undangan hingga setidaknya ada satu waktu dan tempat yang disarankan.
  • Jika seseorang meminta merubah ke pertemuan, dukungan untuk perubahan permintaan harus diperluas untuk mendukung kegiatan.

Ini adalah sebagian besar dasar-dasarnya. Sekarang, mari kita berpikir tentang kode.

Kode Impacts

Source Code Branching

Sering, hal ini membantu untuk cabang sendiri kode dalam GitHub sehingga anda dapat bekerja pada fitur baru dari basis kode tingkat produksi stabil. Hal ini memungkinkan anda untuk kembali dan memperbaiki bug atau membuat kecil inkremental perubahan ketika bekerja pada perubahan besar. Orang-orang GitHub ketat dengan cara yang masuk akal pasti untuk tim:

Hanya ada satu aturan: semua yang ada di cabang master selalu dapat disebarkan

Karena ada hanyalah salah satu dari saya dan saya cukup baik mengelola basis kode saya, saya sedikit lebih laissez faire tentang aturan ini.

Tapi bercabang kode ini juga berguna untuk meninjau perubahan kode ketika anda siap untuk pengujian. Aku akan berbagi demonstrasi ini pada akhir tutorial hari ini.

Replicating Common Code

Akan ada dua jenis meeting sekarang: yang didasarkan hanya pada tanggal dan waktu serta kegiatan di sekitar, tanggal, dan waktu. Jadi model pertemuan perlu beradaptasi.

Untuk waktu dan tempat, ada khusus model MeetingTime dan MeetingPlace serta model untuk preferensi ini dengan peserta, disebut MeetingTimeChoices dan MeetingPlaceChoices. Anda dapat membaca lebih lanjut tentang membangun ini dalam Bangun Startup Atia dengan PHP: penjadwalan ketersediaan dan pilihan.

Jadi tabahkan kegiatan pada dasarnya memerlukan duplikasi, buat MeetingActivity dan MeetingActivityChoices dan mereka menemani controller, model, pemandangan, migrasi JavaScript dan Ajax, dan database.

Pengaturan Akun dan Meeting

Juga, penyelenggara memiliki preferensi berbagai pengaturan akun dan pengaturan pertemuan untuk apakah peserta dapat menyarankan dan memilih aktivitas terakhir.

Email Template

Menambahkan aktivitas juga memengaruhi template email untuk undangan dan menyelesaikan meeting.

Event History dan Log

Karena setiap perubahan ke sebuah pertemuan didata, masing-masing pilihan kegiatan dan perubahan juga diperlukan untuk login.

Area Lain Miscellaneous

.Ics Kalender file harus diubah untuk memasukkan kegiatan. Pada akhirnya, API akan perlu diperbarui — dan bahkan statistik untuk panel kontrol administratif.

Meskipun tampaknya sederhana di depan, menambahkan kegiatan sebenarnya membutuhkan banyak kode dan pengujian baru.

Coding Highlights

Meskipun terlalu banyak kode baru untuk dibahas dalam satu tutorial, mari kita bahas aspek yang disorot dari beberapa konsep di atas.

Migrasi Database

Pertama, saya membuat migrasi database. Sebelumnya saya berbicara dari mereplikasi kode dengan aspek-aspek memiliki kesamaan. Berikut adalah contoh migrasi MeetingActivity vs MeetingTime tabel yang lama migrasi:

Inilah migrasi MeetTime, dan anda dapat melihat persamaannya:

Pada akhirnya, saya perlu lima untuk tabel baru berikut:

  1. m161202_020757_create_meeting_activity_table
  2. m161202_021355_create_meeting_activity_choice_table, untuk menyimpan preferensi ketersediaan setiap peserta rapat untuk setiap aktivitas
  3. m161202_024352_extend_meeting_setting_table_for_activities untuk pengaturan pertemuan tertentu untuk menambahkan atau memilih kegiatan
  4. m161202_024403_extend_user_setting_table_for_activities untuk setelan akun
  5. m161203_010030_extend_meeting_table_for_activities dan untuk menambahkan is_activity untuk menunjukkan tempat pertemuan dengan atau tanpa kegiatan

Membangun Framework MVC untuk Kegiatan

Building Startups - Approaching Major Features - The Gii Scaffolding Menu

Saya menggunakan kemampuan scaffolding Gii Yii untuk menciptakan model, controller, dan initial views. Saya sudah membahas migrasi dan Gii sebelumnya dalam seri ini.

JavaScript dan jQuery Changes

Ada juga tambahan besar JavaScript dan jQuery yang digunakan, terutama sekarang bahwa berinteraksi dengan unsur-unsur perencanaan pertemuan dilakukan dengan Ajax, tanpa refresh halaman.

Di sini, misalnya, adalah loop kode untuk melihat jika waktu pertemuan yang dipilih:

Dengan menggunakan skema penamaan umum, menulis kode untuk kegiatan ini ditiru dari ini:

Fungsi lainnya, seperti yang menampilkan respon kepada pengguna, hanya perlu diperpanjang untuk kegiatan:

Bahkan dengan fitur yang sangat reflektif dalam kualitas sebagai fitur yang ada, penambahan kode baru sangat luas. Berikut ini lebih dari JavaScript, misalnya. Kode ini mencakup lebih banyak fungsi ajax interaktif dari waktu meeting di halaman perencanaan:

Penambahan Framework

Tentu saja, ada model, pengendali dan pandangan yang harus ditambahkan. Berikut adalah kutipan dari model MeetingActivity.php yang berisi daftar sejumlah aktivitas default yang dapat dengan cepat digunakan pengguna untuk menggunakan:

Building Startups - Approaching Major Features - Activity Typeahead List

Dan inilah kutipan dari /frontend/views/activity/_form.php dengan TypeaheadBasic widget menggunakan defaultActivityList() di atas:

Tetapi ada banyak perubahan pada kode di luar kebutuhan framework umum. Berikut ini adalah Meeting.php model canSend(), fungsi yang menentukan apakah pengguna diperbolehkan untuk mengirim undangan meeting. Ini menentukan apakah pertemuan memenuhi persyaratan minimum untuk mengirim, seperti memiliki waktu dan aktivitas atau waktu dan tempat.

Di bawah ini, anda dapat melihat bagaimana bagian baru harus ditambahkan untuk kegiatan:

Email Template

Memperbarui tata letak email membutuhkan sedikit pemikiran tentang desain dan cara terbaik untuk menyajikan kegiatan dalam memenuhi undangan dan konfirmasi. Berikut ini contoh undangan email yang diperbarui:

Building Startups - Approaching Major Features - Email Invitation Theme

Pada dasarnya, jika meeting memiliki aktivitas, undangan termasuk deretan lebar di atas waktu dan tempat, lagi mereplikasi banyak kode yang ada untuk waktu dan tempat:

Reflecting on the Changes

Pada akhirnya, fitur aktivitas membutuhkan cabang kode baru yang sangat besar. Inilah pull request:

Itu sangat besar sehingga saya memutuskan untuk membuat video yang menarik melalui semua perubahan di GitHub dengan musik yang sesuai diputar di background ... nikmati:

Secara keseluruhan, membangun fitur kegiatan itu menantang dan membantu bagi saya untuk berpikir tentang arsitektur situs dan bagaimana membuat kemajuan yang cepat dan stabil pada basis kode dari startup satu orang. Gunakan replikasi, tetapi cerminkan dulu pada keseluruhan ruang lingkup.

Fitur kegiatan akhirnya menyentuh lebih banyak area daripada yang saya perkirakan.

Perencanaan ke depan akan membantu anda menghindari menjadi terjebak dalam perangkap pengkodean yang tidak pernah berakhir untuk fitur baru. Jika anda menemukan diri anda dalam beberapa parit yang dalam, mimpi buruk pengkodean yang tidak akan berakhir, periksa perubahan anda ke cabang fitur anda, kembali ke master, dan kerjakan yang lain. Ini membantu untuk menjernihkan pikiran anda.

Saya benar-benar mengambil pendekatan yang sedikit berbeda untuk membimbing anda dalam episode ini, dan saya harap itu membantu.

Punya pemikiranmu sendiri? Ide ide? Feedback? Anda selalu dapat menghubungi saya di Twitter @lookahead_io secara langsung. Tonton tutorial yang akan datang di sini di Membangun Startup Anda Dengan PHP series. Ada banyak hal mengejutkan ke depannya.

Sekali lagi, jika Anda belum mencoba Meeting Planner atau Simple Planner namun, lanjutkan dan jadwalkan pertemuan pertama Anda:

Link Terkait

Advertisement
Advertisement
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.