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

Erstellen Sie Ihr Startup: Annäherung an wichtige Feature-Erweiterungen

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

German (Deutsch) translation by Wei Zhang (you can also view the original English article)

Final product image
What You'll Be Creating

Dieses Tutorial ist Teil der Building Your Startup with PHP-Serie auf Envato Tuts +. In dieser Serie führe ich Sie durch die Einführung eines Start-ups von der Idee zur Realität mit meiner Meeting-Planer-App als ein echtes Beispiel. Bei jedem Schritt werde ich den Meeting-Planer-Code als Open-Source-Beispiele veröffentlichen, von denen Sie lernen können. Ich werde auch auf geschäftliche Probleme im Zusammenhang mit dem Start eingehen, sobald sie auftreten.

So gehen Sie zu wichtigen Feature-Updates über

In diesen Tagen arbeite ich meistens daran, dem Meeting Planner kleine Verbesserungen hinzuzufügen. Die Grundlagen funktionieren ziemlich gut und ich versuche, die Anwendung basierend auf meiner Vision und dem Feedback der Leute schrittweise zu verbessern. Manchmal ist meine Vision eine größere Veränderung, und das kann jetzt schwieriger sein, wenn die Codebasis so stark gewachsen ist.

Im heutigen Tutorial werde ich über Möglichkeiten sprechen, über größere Änderungen an einer bestehenden Codebasis nachzudenken. Im Speziellen werde ich Sie durch die Auswirkungen der Möglichkeit führen, die Teilnehmer zu treffen, um gemeinsam Ideen zu sammeln und über Aktivitäten zu entscheiden, d. H. Was wir tun sollten, wenn wir uns treffen.

Falls noch nicht geschehen, versuchen Sie, ein Meeting zu planen, und Sie können jetzt auch eine Aktivität planen. Es wird Ihnen helfen, zu verstehen, wie Sie durch das Tutorial gehen.

Bevor wir beginnen, denken Sie bitte daran, Ihre Kommentare und Feedback weiter unten zu teilen. Ich überwache sie und du kannst mich auch auf Twitter @lookahead_io erreichen. Ich bin besonders interessiert, wenn Sie neue Funktionen oder Themen für zukünftige Tutorials vorschlagen möchten.

Zur Erinnerung: Der gesamte Code für Meeting Planner ist in das Yii2 Framework für PHP geschrieben. Wenn Sie mehr über Yii2 erfahren möchten, schauen Sie sich unsere Parallel-Serie Programmierung mit Yii2 an.

Die Aktivitätsplanungsfunktion

Building Startups - Approaching Major Features - Planning an Activity page

Grundsätzlich sind Meeting Planner und Simple Planner so konzipiert, dass die Planung so einfach wie möglich ist. Sie schlagen ein paar Mal und Orte vor und teilen sie mit einer weiteren Person, damit sie die Optionen abwägen können. Dann entscheiden Sie gemeinsam, und Meeting Planner behält den Überblick über Kalendereinträge, Erinnerungen und einfache Möglichkeiten zur nachträglichen Anpassung.

Als Beispiel, hier ist ein Video der Planung für Gruppen:

Ich wollte die Terminplanung für Zeiten und Orte um das Konzept der Aktivitäten erweitern. Zum Beispiel, wenn Sie ein Treffen mit Ihren Freunden planen, fragen Sie im Wesentlichen, ob wir ins Kino gehen, tanzen oder snowboarden gehen.

Mit anderen Worten, ich wollte ein Panel erstellen, wie das für die unten gezeigten Zeiten, aber für Aktivitäten:

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

Die MVC-Architektur und mein Code-Benennungsschema sind sich zwischen den Besprechungszeiten und -orten sehr ähnlich, so dass das Erstellen von Aktivitäten an der Oberfläche ziemlich einfach zu sein schien. Die Entscheidung, dies zu tun, hatte jedoch weitreichende Konsequenzen.

Scoping der Änderungen

Es ist wichtig, wenn Sie ein großes Feature hinzufügen, um sowohl darüber nachzudenken, wo der Code geändert werden muss, als auch über alle Stellen in Ihrer Anwendung, die möglicherweise durch die Auswirkungen beeinflusst werden.

Kundenbezogene Auswirkungen

Von der Designseite habe ich darüber nachgedacht, wie sich Aktivitäten auf den kundenorientierten Service auswirken:

  • Es wird sich ändern, ein Meeting zu organisieren, um einen neuen Typ, ein aktivitätsgesteuertes Ereignis, zuzulassen. Es wird ein zusätzliches Panel auf der Planungsseite geben.
  • Das Aktivitätspanel muss so gestaltet sein, dass Benutzer aus Standardeinstellungen auswählen oder ihre eigenen anpassen und hinzufügen können, z. Backcountry Ski statt nur Skifahren, "Go Star Wars Rogue One" sehen, anstatt nur "Go seht einen Film."
  • E-Mail-Einladungen müssen Platz zum Auflisten von Aktivitätsoptionen enthalten.
  • Kalenderereignisse möchten die ausgewählte Aktivität in das Thema des Meetups integrieren.
  • Die Organisatoren möchten vielleicht einige Aktivitätsideen an einen Freund oder eine Gruppe schicken, ohne einen Platz gewählt zu haben, also muss ich dies zulassen. Das System lässt derzeit keine Einladung zu, bis mindestens eine Uhrzeit und ein Ort vorgeschlagen wurden.
  • Wenn jemand eine Änderung an einer Besprechung anfordert, muss die Unterstützung für Änderungsanfragen erweitert werden, um Aktivitäten zu unterstützen.

Das waren die meisten Grundlagen. Nun, lasst uns über den Code nachdenken.

Code Auswirkungen

Quellcodeverzweigung

Häufig ist es hilfreich, den eigenen Code in GitHub zu verzweigen, damit Sie neben der stabilen Codebasis auf Produktionsebene an der neuen Funktion arbeiten können. Auf diese Weise können Sie Fehler zurückgeben und beheben oder kleinere Änderungen vornehmen, während Sie an einer größeren Änderung arbeiten. Die GitHub-Leute sind in einer Weise strenger, die für Teams definitiv sinnvoll ist:

Es gibt nur eine Regel: Alles im master-Zweig ist immer verfügbar.

Da es nur einen von mir gibt und ich bin ziemlich gut darin, meine Codebasis zu verwalten, bin ich ein wenig laissez faire über diese Regel.

Der Verzweigungscode ist jedoch auch nützlich, um Codeänderungen zu überprüfen, wenn Sie zum Testen bereit sind. Ich werde eine Demonstration davon am Ende des heutigen Tutorials teilen.

Common Code replizieren

Es wird jetzt zwei Arten von Meetings geben: solche, die sich nur auf Daten und Zeiten beziehen und auf Aktivitäten, Termine und Zeiten. Das Meeting-Modell muss also angepasst werden.

Für Zeiten und Orte gibt es speziell die Modelle MeetingTime und MeetingPlace sowie Modelle für die Voreinstellungen für diese mit den Teilnehmern, genannt MeetingTimeChoices und MeetingPlaceChoices. Weitere Informationen zum Erstellen finden Sie unter Erstellen des Startups mit PHP: Planen der Verfügbarkeit und Auswahlmöglichkeiten.

Das Hinzufügen von Aktivitäten würde also im Wesentlichen das Duplizieren dieser Elemente erfordern und MeetingActivity und MeetingActivityChoices sowie deren Begleitung von Controllern, Modellen, Ansichten, JavaScript und Ajax und Datenbankmigrationen erstellen.

Konto- und Besprechungseinstellungen

Außerdem haben Organisatoren die Präferenz für verschiedene Kontoeinstellungen und Einstellungen für Besprechungen, ob Teilnehmer die letzte Aktivität vorschlagen und auswählen können.

E-Mail-Vorlagen

Das Hinzufügen von Aktivitäten hat sich auch auf E-Mail-Vorlagen für Einladungen und abgeschlossene Besprechungen ausgewirkt.

Ereignisverlauf und Protokolle

Da jede Änderung an einer Besprechung protokolliert wird, mussten auch jede Aktivitätsoption und Änderung protokolliert werden.

Andere verschiedene Bereiche

Die ICS-Kalenderdatei sollte geändert werden, um die Aktivität einzuschließen. Letztendlich müsste die API aktualisiert werden - und sogar die Statistiken für das Verwaltungs-Dashboard.

Während es im Vorfeld einfach schien, erforderte das Hinzufügen von Aktivitäten tatsächlich viel neuen Code und Tests.

Kodierung Höhepunkte

In einem Tutorial gibt es zu viel neuen Code, den wir behandeln sollten. Lassen Sie uns jedoch einige Aspekte der oben genannten Konzepte behandeln.

Datenbankmigrationen

Zuerst habe ich die Datenbankmigrationen erstellt. Früher sprach ich davon, Code mit Featureaspekten zu replizieren. Hier sehen Sie ein Beispiel für die MeetingActivity-Migration im Vergleich zur älteren Migration der MeetingTime-Tabelle:

Hier ist die Migration von MeetingTime, und Sie können die Ähnlichkeiten sehen:

Letztendlich brauchte ich fünf für die folgenden neuen Tabellen:

  1. m161202_020757_create_meeting_activity_table
  2. m161202_021355_create_meeting_activity_choice_table zum Speichern der Verfügbarkeitspräferenzen für jeden Besprechungsteilnehmer für jede Aktivität
  3. m161202_024352_extend_meeting_setting_table_for_activities für die Einstellungen eines bestimmten Meetings zum Hinzufügen oder Auswählen von Aktivitäten
  4. m161202_024403_extend_user_setting_table_for_activities für die Standardeinstellungen des Accounts
  5. m161203_010030_extend_meeting_table_for_activities und zum Hinzufügen von is_activity, um die Eigenschaft eines Meetings mit oder ohne Aktivität anzugeben

Erstellen des MVC-Framework für Aktivitäten

Building Startups - Approaching Major Features - The Gii Scaffolding Menu

Ich habe die Gii-Gerüstfunktion von Yii verwendet, um das Modell, den Controller und die ersten Ansichten zu erstellen. Ich habe Migrationen und Gii früher in der Serie behandelt.

JavaScript- und jQuery-Änderungen

Es gab auch wesentliche Ergänzungen für die verwendeten JavaScript- und jQuery-Funktionen, insbesondere jetzt, da die Interaktion mit Planungselementen für ein Meeting mit Ajax erfolgt, ohne die Seite zu aktualisieren.

Hier sehen Sie beispielsweise die Code-Schleife, um zu sehen, ob eine Besprechungszeit gewählt wurde:

Mit einem allgemeinen Benennungsschema konnte der Code für Aktivitäten repliziert werden:

Andere Funktionen, z. B. solche, die Antworten auf den Benutzer anzeigen, müssen lediglich für Aktivitäten erweitert werden:

Selbst mit einem Merkmal, das so stark in den Eigenschaften vorhandener Merkmale widerspiegelt, waren die Ergänzungen des neuen Codes umfangreich. Hier ist zum Beispiel mehr von JavaScript. Dieser Code deckt viel mehr von der interaktiven Ajax-Funktionalität der Besprechungszeiten auf der Planungsseite ab:

Framework-Ergänzungen

Sicherlich gab es Modelle, Controller und Ansichten, die hinzugefügt werden mussten. Hier ist ein Auszug aus dem MeetingActivity.php-Modell, das eine Reihe von Standardaktivitäten auflistet, die der Benutzer schnell eingeben kann:

Building Startups - Approaching Major Features - Activity Typeahead List

Und hier ist ein Auszug aus der /frontend/views/activity/_form.php mit dem TypeaheadBasic-Widget, das die obige defaultActivityList() verwendet:

Aber es gibt zahlreiche Änderungen am Code außerhalb der allgemeinen Framework-Anforderungen. Hier ist die canSend() -Methode des Meeting.php-Modells, die bestimmt, ob der Benutzer eine Einladung für ein Meeting senden darf. Es bestimmt, ob ein Meeting die Mindestanforderungen für das Senden erfüllt hat, z. B. Zeit und Aktivität oder Zeit und Ort.

Im Folgenden sehen Sie, wie ein neuer Abschnitt für Aktivitäten hinzugefügt werden musste:

E-Mail-Vorlagen

Das Aktualisieren der E-Mail-Layouts erforderte ein wenig Nachdenken über das Design und die beste Darstellung von Aktivitäten in Besprechungseinladungen und Bestätigungen. Hier ist ein Beispiel für die aktualisierte E-Mail-Einladung:

Building Startups - Approaching Major Features - Email Invitation Theme

Wenn eine Besprechung eine Aktivität aufweist, enthält die Einladung im Wesentlichen eine breite Zeile über Zeiten und Orten, die wiederum einen Großteil des vorhandenen Codes für Zeiten und Orte repliziert:

Nachdenken über die Änderungen

Letztendlich benötigte die Aktivitätsfunktion einen riesigen neuen Code-Zweig. Hier ist die Pull-Anfrage:

Es war so groß, dass ich beschloss, ein lustiges Video zu machen, das durch alle Änderungen in GitHub blättert, wobei die passende Musik im Hintergrund abgespielt wird ...

Insgesamt war der Aufbau der Aktivitäten eine Herausforderung und hilfreich für mich, um über die Architektur der Website nachzudenken und einen schnellen, stabilen Fortschritt in der Codebasis eines Ein-Personen-Startups zu erreichen. Verwenden Sie die Replikation, aber reflektieren Sie zuerst den Gesamtumfang.

Die Aktivitätsfunktion hat mehr Bereiche berührt, als ich erwartet hatte.

Vorausplanung wird Ihnen helfen, nicht in endlosen Codierungsfallen für neue Funktionen stecken zu bleiben. Wenn Sie sich in einem tiefen Graben befinden, einem Albtraum, der einfach nicht enden wird, checken Sie Ihre Änderungen in Ihren Feature-Zweig ein, wechseln Sie zurück zum Master und arbeiten Sie an etwas anderem. Es hilft, deinen Kopf zu klären.

Ich habe definitiv einen etwas anderen Ansatz gewählt, um Sie in dieser Episode zu führen, und ich hoffe, es war hilfreich.

Hast du deine eigenen Gedanken? Ideen? Feedback? Sie können mich jederzeit auf Twitter @lookahead_io erreichen. Achten Sie auf zukünftige Tutorials hier in der Build Your Startup With PHP-Serie. Es gibt eine Menge überraschender Dinge voraus.

Wenn Sie Meeting Planner oder Simple Planner noch nicht ausprobiert haben, können Sie Ihr erstes Meeting planen:

verwandte Links

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.