Organisieren Sie Ihr nächstes PHP-Projekt richtig

Wenn Sie mit PHP anfangen, kann es schwierig sein, herauszufinden, wie Sie ein Projekt am besten organisieren. Wenn Sie jemals mit dem Speicherort Ihrer Bilder, externen Bibliotheken oder der Trennung Ihrer Logik von Ihrem Layout verwirrt wurden, sollten Sie diese Tipps lesen. Sie bringen Sie in die richtige Richtung.

Tutorial-Details

  • Programm: PHP / Projekte
  • Ausführung: 1
  • Schwierigkeit: Einfach
  • Geschätzte Fertigstellungszeit: 20 Minuten

Verzeichnisaufbau

Ich würde sagen, die wichtigste Sache bei der schnellen Inbetriebnahme Ihres Projekts ist eine solide Verzeichnisstruktur, die Sie für mehrere Projekte wiederverwenden können. Wenn Sie ein Framework verwenden, wird normalerweise eine Struktur zur Verfügung gestellt. In diesem Szenario arbeiten wir jedoch an einer einfachen Website oder App.

Nervenzusammenbruch

  • Sie sind wahrscheinlich sehr vertraut mit dem public_html Struktur. Dies ist der Dokumentenstamm, in dem auf alle Ihre öffentlichen Dateien zugegriffen wird (/public_html/page.php wird an um zugegriffen example.com/page.php).

    • img - Alle Ihre Bilddateien. Ich entschied mich, Inhaltsbilder von Layoutbildern zu trennen.
    • css - Alle Ihre CSS-Dateien.
    • js - Alle Ihre Javascript-Dateien.
  • Das Ressourcen Das Verzeichnis sollte alle Bibliotheken von Drittanbietern, benutzerdefinierte Bibliotheken, Konfigurationen und anderen Code enthalten, der als Ressource in Ihrem Projekt fungiert.

    • config.php - Hauptkonfigurationsdatei. Sollte standortweite Einstellungen speichern.
    • Bibliothek - Zentrale Stelle für alle benutzerdefinierten Bibliotheken und Bibliotheken von Drittanbietern.
    • Vorlagen - Wiederverwendbare Komponenten, aus denen Ihr Layout besteht.

Die Config-Datei

Als Designer und Entwickler besteht unser Hauptziel darin, so wenig wie möglich zu arbeiten. Eine Möglichkeit, dieses Ziel zu erreichen, ist die Verwendung von Konfigurationsdateien. Um eine bessere Vorstellung davon zu erhalten, was die Konfigurationsdatei haben sollte, schauen Sie sich dieses Beispiel an.

 array ("db1" => array ("dbname" => "database1", "username" => "dbUser", "password" => "pa $$", "host" => "localhost"), "db2 "=> array (" dbname "=>" database2 "," username "=>" dbUser "," password "=>" pa $$ "," host "=>" localhost "))," urls "=> array ("baseUrl" => "http://example.com"), "pfade" => array ("resources" => "/ path / to / resources", "images" => array ("content" = > $ _SERVER ["DOCUMENT_ROOT"]. "/ Images / content", "layout" => $ _SERVER ["DOCUMENT_ROOT"]. "/ Images / layout"))); / * Normalerweise füge ich Folgendes in eine Bootstrap-Datei oder eine Art Umgebungs-Setup-Datei (Code, der zu Beginn jeder Seitenanforderung ausgeführt wird) ein, aber sie funktionieren genauso gut in Ihrer Konfigurationsdatei, wenn sie in PHP ist (einige Alternativen) zu PHP sind XML- oder INI-Dateien). * / / * Das Erstellen von Konstanten für häufig verwendete Pfade macht die Sache viel einfacher. Ex. required_once (LIBRARY_PATH. "Paginator.php") * / defined ("LIBRARY_PATH") oder define ("LIBRARY_PATH") realpath (dirname (__ FILE__). '/ library')); Definiert ("TEMPLATES_PATH") oder Definieren ("TEMPLATES_PATH", realpath (dirname (__ FILE__). '/ templates')); /* Fehler melden. * / ini_set ("error_reporting", "true"); error_reporting (E_ALL | E_STRCT); ?>

Dies ist eine grundlegende Drop-In-Konfigurationsdatei. Ein mehrdimensionales Array dient als flexible Struktur für den Zugriff auf verschiedene Konfigurationselemente wie Datenbankanmeldeinformationen.

  • db - Speichern Sie Datenbankberechtigungsnachweise oder andere Daten, die sich auf Ihre Datenbanken beziehen.
  • pfade - Häufig verwendete Pfade zu verschiedenen Ressourcen für Ihre Site.
    • Protokolldateien
    • Verzeichnisse hochladen
    • Ressourcen
  • URLs - Das Speichern von URLs kann sehr praktisch sein, wenn Sie auf entfernte Ressourcen in Ihrer Site verweisen.
  • E-Mails - Speichern Sie Debugging- oder Admin-E-Mails, die Sie zur Behandlung von Fehlern oder in Kontaktformularen verwenden können.

Die Verwendung von Konstanten für häufig verwendete Pfade macht include-Anweisungen (benötigen oder umfassen) ein Kinderspiel, und wenn sich der Pfad ändert, müssen Sie ihn nur an einer Stelle aktualisieren.

Verwenden verschiedener Konfigurationsdateien für mehrere Umgebungen

Durch die Verwendung verschiedener Konfigurationsdateien für mehrere Umgebungen können Sie abhängig von der aktuellen Umgebung relevante Einstellungen vornehmen. Wenn Sie also unterschiedliche Datenbankanmeldeinformationen oder unterschiedliche Pfade für jede Umgebung verwenden, stellen Sie durch das Einrichten der entsprechenden Konfigurationsdateien sicher, dass Ihr Code beim Aktualisieren Ihrer Live-Site problemlos funktioniert. Auf diese Weise können Sie auch unterschiedliche Fehlerberichtseinstellungen basierend auf der aktuellen Umgebung festlegen. Zeigen Sie niemals Fehler auf Ihrer Live-Site an! Durch die Anzeige von Fehlern auf der Live-Site können sensible Daten (z. B. Kennwörter) für Benutzer angezeigt werden..

Das Layout

Wiederverwendbare Vorlagen sind eine weitere große Zeitersparnis. Es gibt einige großartige Bibliotheken für das Templating (wie Smarty), und ich empfehle immer, eine solche Bibliothek zu verwenden, anstatt das Rad neu zu erfinden. Diese Bibliotheken bieten eine Vielzahl von Funktionen (z. B. Hilfsmethoden zur Währungsformatierung und zum Verschleiern von E-Mail-Adressen). Da dies eine einfache Site ist, möchten wir uns jedoch nicht die Zeit nehmen, um die Bibliothek einzurichten, und werden die grundlegendsten grundlegenden Vorlagen verwenden. Dies erreichen wir, indem wir gemeinsame Seiten oder Module in unsere Seiten einbinden. Auf diese Weise wird, wenn wir etwas in der Kopfzeile ändern möchten, z. B. das Hinzufügen eines Links zur globalen Navigation, diese auf der gesamten Site verbreitet.

header.php

    Einfache Site   

Einfache Site

  • Zuhause
  • Artikel
  • Portfolio

rightPanel.php

  • PHP
  • HTML
  • CSS

footer.php

Inhalt der Fußzeile…

index.php

Nehmen wir an, dass wir alle unsere Layoutkomponenten (Header, Footer, RightPanel) in unserem Ressourcenverzeichnis unter Vorlagen ablegen.

 

Weiter geht es

Während dieses grundlegende Vorlagensystem Sie zu einem guten Start bringt, können Sie noch viel weiter gehen. Sie können beispielsweise eine Klasse oder Funktionen erstellen, die alle Vorlagendateien enthalten und eine Inhaltsdatei als Argument für das Rendern innerhalb des Layouts akzeptieren. Auf diese Weise müssen Sie die Vorlagendateien nicht in jede Seite Ihrer Website einbinden, sondern eher abstrahieren, dass logisches Aufrufen bedeutet, was noch weniger Arbeit auf der Straße bedeutet. Ich zeige dir ein kurzes Beispiel.

/resources/library/templateFunctions.php

 0) foreach ($ variables as $ key => $ value) if (strlen ($ key)> 0) $ $ key = $ value;  request_once (TEMPLATES_PATH. "/header.php"); Echo "
\ n "." \ t
\ n "; if (file_exists ($ contentFileFullPath)) requir_once ($ contentFileFullPath); else / * Wenn die Datei nicht gefunden wird, kann der Fehler auf viele Arten behandelt werden. In diesem Fall fügen wir nur einen Fehler ein template. * / requir_once (TEMPLATES_PATH. "/error.php"); // Schließen Sie das Echo des Inhalts "\ t
\ n "; required_once (TEMPLATES_PATH." /rightPanel.php "); // Container-Echo des Containers schließen"
\ n "; required_once (TEMPLATES_PATH." /footer.php ");?>

index.php

Dies setzt voraus, dass sich in Ihrem Vorlagenverzeichnis eine Datei namens home.php befindet, die als Inhaltsvorlage fungiert.

 $ setInIndexDotPhp); renderLayoutWithContentFile ("home.php", $ variables); ?>

home.php

 

Startseite

Vorteile dieser Methode umfassen:

  • Größere Trennung von Logik und Sicht (PHP und HTML). Wenn Sie diese Bedenken aufteilen, wird der Code sauberer und die Arbeit des Designers oder Entwicklers wird einfacher, da sie meistens mit ihrem jeweiligen Code arbeiten.

  • Durch das Einkapseln der Vorlagenlogik in eine Funktion können Sie Änderungen an der Darstellung der Vorlage vornehmen, ohne sie auf jeder Seite Ihrer Website zu aktualisieren.

Symlinks

Auf Unix-basierten Systemen (os x, linux) gibt es ein kleines kleines Feature namens Symlinks (Symbolic Links). Symlinks sind Verweise auf tatsächliche Verzeichnisse oder Dateien im Dateisystem. Dies ist besonders nützlich, wenn Sie über eine gemeinsam genutzte Ressource verfügen, z. B. eine Bibliothek, die zwischen mehreren Projekten verwendet wird. Hier sind einige konkrete Dinge, die Sie mit Symlinks tun können:

  • Habe zwei Versionen Ihres Ressourcenverzeichnisses. Beim Aktualisieren Ihres Live-Servers können Sie Ihre neuesten Dateien in ein beliebiges Verzeichnis hochladen. Verweisen Sie einfach den Symlink auf dieses neue Verzeichnis, und aktualisieren Sie sofort Ihre Code-Basis. Wenn etwas schief geht, können Sie sofort zum vorherigen (Arbeits-) Verzeichnis zurückkehren.

  • Freigegebene Ressourcen können einfach mit Symlinks verwaltet werden. Angenommen, Sie haben eine benutzerdefinierte Bibliothek, an der Sie gerade gearbeitet haben. Alle Aktualisierungen der Bibliothek, die Sie in einem Projekt erstellen, sind in einem anderen sofort verfügbar.

Symlinks verwenden

Symlinks vs. Hardlinks

Symlinks oder Softlinks dienen als Verweise auf vollständige Pfade im Dateisystem. Sie können Symlinks an mehreren Stellen verwenden, und das Dateisystem behandelt sie so, als wären sie die eigentlichen Dateien oder Verzeichnisse, auf die sie verweisen. Hardlinks hingegen sind Verweise auf eine Datei auf der Festplatte (man denke an Verknüpfungen in Windows); Sie bringen Sie zum tatsächlichen Speicherort der Datei.

Es gibt ein paar Dinge, die Sie bei der Verwendung von Symlinks beachten sollten. Ihre Serverkonfiguration muss für Symlinks eingerichtet sein. Für Apache erfolgt dies in der Datei httpd.conf. Suchen Sie den Directory-Block und stellen Sie sicher, dass Optionen FollowSymLinks vorhanden sind. Wenn nicht, fügen Sie es hinzu und starten Sie Apache neu.

 Optionen FollowSymLinks AllowOverride Keine 

Symlinks in OS X erstellen

In OS X gibt es zwei Möglichkeiten, Symlinks zu erstellen:

  • Navigieren Sie über die Befehlszeile (cd, change directory) zu dem Verzeichnis, in dem der Symlink erstellt werden soll, und verwenden Sie dann den folgenden Befehl:

    $: ln -s / Pfad / zu / actual / dir targetDir

    Also, wenn unsere eigene Bibliothek lebt ~ / Sites / Libraries / myCustomLibrary wir würden cd dorthin bringen, wo wir diese Bibliothek verwenden wollen cd ~ / Sites / mySite / resources / library und geben Sie ein:

    $: ln -s ~ / Sites / Bibliotheken / myCustomLibrary myCustomLibrary

    Beachten Sie, dass diese Methode in allen Unix-basierten Betriebssystemen funktionieren sollte.

  • Die Alternative ist durch den Finder. Wenn Sie beim Klicken und Ziehen einer Datei alt + cmd gedrückt halten, wird ein Symlink (oder ein Alias ​​in os x) erstellt, der auf die Datei verweist.

Symlinks in Windows erstellen

Um dies in Windows zu erreichen, müssen Sie den Befehl mklink in der Eingabeaufforderung verwenden:

 C: \ mklink / D C: \ libraries \ myCustomLibrary C: \ Benutzer \ derek \ Sites \ mySite \ resources \ library \ myCustomLibrary

Zusammenfassung

Diese Tipps richten sich an Anfänger oder Benutzer, die einfache Websites oder Anwendungen erstellen. Im Idealfall für größere Anwendungen oder Standorte sollten Sie etwas Fortgeschrittenes wie die MVC-Architektur und die objektorientierte Programmierung in Betracht ziehen. Ich ermutige Sie, sich diese anzuschauen, sobald Sie Ihre Füße nass gemacht haben und das Gefühl haben, dass Sie die meisten der oben genannten Schritte überwunden haben. Ich habe mich entschieden, die Quellcodeverwaltung nicht zu behandeln, da dies ein ziemlich großes Thema für sich ist. Diese Tipps sollten Ihnen jedoch helfen, Ihre Dateien für eine einfachere Quellcodeverwaltung zu organisieren (Hinweis: Speichern Sie Elemente wie Layoutbilder in Ihrem Ressourcenverzeichnis und verknüpfen Sie sie mit Ihrem / public_html / img dir). Schauen Sie sich unbedingt die Quellcodeverwaltung an, wie Subversion oder Git für alle Ihre Projekte.

Ich hoffe, Sie finden diese Tipps hilfreich, wenn Sie Ihr nächstes PHP-Projekt starten. Vielen Dank!

Ressourcen

  • Smarty Templating Engine
  • Mehrstufige Architektur
  • MVC
  • Objekt orientierte Programmierung
  • Subversion für Designer (Versionskontrolle)
  • Symlinks
  • Hardlinks
  • Folgen Sie uns auf Twitter oder abonnieren Sie den NETTUTS-RSS-Feed für mehr tägliche Webentwicklungsberichte und -artikel.