2010-03-14 6 views
9

Ich suche Ratschläge, Tutorials und Links, wie man eine mittelgroße Webanwendung mit Kohana 3 aufsetzt. Ich habe MVC-Muster in der Vergangenheit implementiert, aber nie gegen gearbeitet ein "formalisiertes" MVC-Framework, so dass ich mich immer noch mit der Terminologie beschäftige - mit einfachen Beispielen herumspielen, Ansichten und Vorlagen erstellen und so weiter.Wie man Geschäftslogik in einem Kohana 3 Projekt anordnet

Ich komme ziemlich gut voran, aber ich möchte ein reales Webprojekt (eines meiner eigenen, das ich schon seit einiger Zeit plane) als Lernobjekt einrichten.

Ich lerne am besten lernen, aber Beispiel-basierte Dokumentation ist ein wenig spärlich für Kohana 3 jetzt - sie sagen sich selbst auf der Website. Während ich mir keine Gedanken darüber mache, wie ich das Framework lernen soll, möchte ich sicherstellen, dass die Codebasis von Anfang an gesund strukturiert ist - dh Controller sind gut aufgeteilt, gut und nach Standards benannt, und am wichtigsten ist die Geschäftslogik getrennt in angemessen große Modelle.

Meine Anwendung könnte in ihrem Kern als ein Geschäftsverzeichnis mit einer Reihe von Such- und Auflistungsfunktionen und einem Login-Bereich für jeden Eintragsbesitzer beschrieben werden. Das eigentliche administrative Datenbank-Backend ist bereits erledigt.

Angenommen, ich habe alle API ausgearbeitet und bereits vorhanden - Liste alle Unternehmen, Geschäft bearbeiten, Unternehmen nach Straßennamen auflisten, Angebot als Geschäft angemeldet, und so weiter, und ich bin nur auf der Suche nach Passen Sie die Funktionalität in ein MVC-Muster und in eine Kohana-Anwendungsstruktur, die leicht erweitert werden kann.

  • Haben Sie Beispiele aus der Praxis von „Datenbank-schweren“ Anwendungen wie Verzeichnisse wissen, Online-Communities ... mit einer Login-Bereich auf Kohana gebaut 3, vorzugsweise Open Source, so kann ich einen Blick nehmen, wie Sie machen es?

  • Gibt es Konventionen oder Best Practices für die Strukturierung eines erweiterbaren Login-Bereichs für Endbenutzer in einem Kohana-Projekt, das nicht nur eine Unternehmensverzeichnisseite, sondern auch weitere Produkte auf separaten Seiten verwalten kann?

  • Kennen Sie irgendwelche guten Ressourcen für den Aufbau komplexer Anwendungen mit Kohana?

  • Haben Sie etwas ähnliches aufgebaut und könnten mir Empfehlungen zu einer Projektstruktur geben?

Bounty

ich die Prämie bin Vergabe an @antpaw, weil er mich mit einigen Business-Logik mit einer Kohana Anwendung zur Verfügung gestellt, die mir viele Beispiele gibt. Prost auch @Pixel Developer für deinen exzellenten Input - wie so oft würde ich mir wünschen, man könnte ein Kopfgeld teilen!

Antwort

7

Ich würde das Auth-Modul verwenden, das mit kohana für die Anmeldung kommt. Dadurch erhalten Sie die Rollentabelle, in der Sie die möglichen Berechtigungsoptionen einrichten und später mit den Benutzern in Beziehung setzen können. Danach können Sie innerhalb der __constructor() oder action_function() jedes Controllers überprüfen, ob der Benutzer die erforderliche Rolle z. mit der Funktion -> has(). Sie sollten auch das ORM-Modul verwenden, es ist einfach großartig, da Sie viele Beziehungen zwischen den Tabellen haben. Auch die Methode __get() in einem ORM-Objekt kann äußerst praktisch sein.

Es ist auch ziemlich einfach, eine Controller-Funktion zu erweitern, indem Sie den neuen Parameter auf NULL setzen und in einer if-Anweisung danach suchen. z.B.Sie benötigen nur eine Funktion, um einen alten Eintrag zu bearbeiten oder einen neuen Eintrag hinzuzufügen.

public funciton action_manage($id = NULL) 
{ 
    $entry = ORM::factory('entry', $id); // if id is null a new entry will be returned 
} 

Es ist auch wichtig, dass Sie die Ansichten in Unterordner strukturieren, um ein unordentliches Ansichtsverzeichnis zu vermeiden.

+0

Prost @ antpaw. Yup, Auth und ORM sehen sehr interessant aus, einer der Gründe, warum ich mich für Kohana interessiere. Ich suche hauptsächlich nach realen Beispielen, wie man Ansichten und andere Dateien kategorisieren kann, um immense Konglomerate von Modellen und dergleichen zu vermeiden, weißt du irgendetwas in dieser Richtung? –

+0

Übrigens, ich googelte für xCSS neulich, der Google-Index hat antpaw.org als erster Treffer, wenn Sie danach suchen: http://www.google.de/#hl=de&source=hp&q=xcss&aq = f & aqi = g4g-s1g1g-s3g1 & aql = & oq = & fp = a685f6127e795e5e Es gibt keine direkte Verbindung zu xCss von antpaw.org. Aber das wird sich wahrscheinlich selbst beheben. Tolle Flash-Seite übrigens, ich mag den Hover-Effekt. –

+0

gut organisieren Ansicht ist wirklich einfach neue Ansicht ('stuff/file') wird Datei.php im stuff Ordner suchen. Ich benenne immer meine Ansicht Ordner wie der Controller, wo sie verwendet werden und die Dateien wie die Methoden aus denen sie aufgerufen werden. Geben Sie Ihre E-Mail-Adresse und ich kann Ihnen Code senden, die eine ähnliche App wie Sie erstellen. – antpaw

12

Viele Fragen zu beantworten, ich werde mein Bestes versuchen.

Kennen Sie reale Beispiele von "datenbanklastigen" Anwendungen wie Verzeichnisse, Online-Communities ... mit einem Log-in-Bereich auf Kohana 3, wo ich einen Blick darauf werfen könnte, wie sie das machen?

Es gibt ein paar Beispielanwendungen da draußen. Woody Gilk (Kohana-Gründer) hat den Code auf seiner persönlichen Website unter github veröffentlicht. Für den Login-Bereich weist er einen Cookie-Wert zu. Kohana 3/2.4 signiert die Cookies, die es sicher machen und die Notwendigkeit für Sitzungen entfernt. Dies ist möglicherweise nicht jedermanns Geschmack, so dass Sie immer eine integrierte Authentifizierungsbibliothek verwenden können, die sowohl Sitzungen als auch Cookies verwendet.

Hier sind einige andere Projekte, die Sie könnte dich interessieren:

  • Shindig - Leichtgewichtler Blog-Modul für kohana 3
  • Kohanut - Eine erweiterbare CMS in Kohana geschrieben 3

Gibt es Konventionen oder Best Practices für die Strukturierung eines erweiterbaren Login-Bereichs für Endbenutzer in einem Kohana-Projekt, das nicht nur mit einer Geschäftsverzeichnisseite umgehen kann, b ut weitere Produkte auf separaten Seiten?

Wenn ich Sie richtig verstehe, möchten Sie eine Login-Box für jede dieser Seiten generieren? Dies ist mit Kohana 3 einfach, da wir die H in HMVC nutzen können. Sam de Fressyinet schrieb im iBuilding Tech Blog einen Artikel über das, worum es hier geht. Scaling Web Applications with HMVC.

Sie können dann eine interne Anfrage an den Login-Controller oder die Aktion ausführen und die Antwort auf Ihre Ansichtsseite ausgeben.

$login = Request::factory('login')->execute()->response; 

$ login enthält jetzt das Login-Formular, das Sie beliebig platzieren können. Möglicherweise möchten Sie eine andere Antwort zurück, wenn die Anforderung intern ist, weshalb dieses Stück Code nützlich sein kann:

if (Request::instance() !== $this->request) 
{ 
    print 'Internal called made with Request::factory'; 
} 

Kennen Sie gute Ressourcen auf den Aufbau von komplexen Anwendungen mit Kohana?

Es wird keine Dokumentation geben, die Ihnen zeigt, wie Sie komplizierte Anwendungen erstellen. Die Ansicht der Kohana-Community ist, dass Sie ein PHP-Entwickler sind und in der Lage sein sollten, diese Probleme selbst zu lösen. Wenn du das nicht kannst, solltest du Kohana nicht benutzen.

Haben Sie etwas Ähnliches gebaut und könnten mir Empfehlungen zu einer Projektstruktur geben?

Sobald Sie verstehen, wie Kohana 3 Dateien findet, sind die Dinge leicht zu verstehen.

|- classes 
|-- controller 
|-- model 
|- views 

Zum Beispiel:

Controller_Mathew extends Controller 

nach einer Datei aufgerufen mathew.php in:

classes/controller 

Striche verwendet werden können tiefere Verzeichnisse angeben. Beispiel:

Controller_Mathew_Davies extends Controller 

nach einer Datei aufgerufen davies.php in:

classes/controller/mathew/ 

Wie Sie sehen können, werden die Unterstreichungen in dem Controller-Namen fungieren als Verzeichnistrenn. Dies gilt für Modelle und Vanilla-Klassen.