AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP, MySQL] Codedesign

Ein Thema von Luckie · begonnen am 6. Jul 2011 · letzter Beitrag vom 7. Jul 2011
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

AW: [PHP, MySQL] Codedesign

  Alt 6. Jul 2011, 22:44
Hm, wenn du nicht unbedingt auf OOP umsteigen willst, dann würde ich höchstens "Getter"-Methoden zentral sammeln, die dann als Parameter eben die Params für die Query verlangen. Das kann den anderen Code schon übersichtlicher machen.

Aber ich würde mir da meist die Arbeit machen und auf ein FW umsteigen. Hat den Grund, dass man dabei viel lernen kann und zum anderen auch schon sehr viel bzgl. ORM etc. gelöst hat.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: [PHP, MySQL] Codedesign

  Alt 6. Jul 2011, 22:50
Getter-Methoden? Was meinst du damit? Die gibt es doch ohne OOP gar nicht. Und bevor ich irgendwelche Frameworks einsetze, wollte ich eigentlich lernen was da im Hintergrund passiert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: [PHP, MySQL] Codedesign

  Alt 6. Jul 2011, 23:20
Das alles ist ohne Gewähr, dass es funktioniert Ist einfach mal schnell runtergeschrieben! Hier mal wie ich mir die "Getter"-Methoden vorstellen könnte -- das Getter war extra in Anführungszeichen geschrieben, da ich damit eher das "Daten-Holen" meinte.
Code:
<?php
// 
define('TABLE_USER', 'my_users');

//
$pdoConnection = null;

//
function getPdoConnection()
{
    global $pdoConnection;
    $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';
    try {
        $pdoConnection = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
        die('Connection failed: ' . $e->getMessage());
    }
}

//
function getAllUsers()
{
    $sql = 'SELECT * FROM :table';
    $connection = getPdoConnection();
    $query = $connection->prepare($sql);
    $query->bindParam(':table', TABLE_USER, PDO::PARAM_STR);
    $query->execute();
    if ($query === false) {
        return false;
    } else {
        return $query;
    }
}

function gerUser($username = '')
{
    $sql = 'SELECT * FROM :table WHERE username = :username';
    $connection = getPdoConnection();
    $query = $connection->prepare($sql);
    $query->bindParam(':table', TABLE_USER, PDO::PARAM_STR);
    $query->bindParam(':username', $username, PDO::PARAM_STR);
    $query->execute();
    if ($query === false) {
        return false;
    } else {
        return $query;
    }
}
So, nun schaut alles aufgeräumter aus:
Code:
$users = getAllUsers();
if ($users === false) {
    echo 'There are no users registered.';
} else {
    while ($user = $users->fetch(PDO::FETCH_OBJ)) {
        echo $user->username;
    }
}
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#4

AW: [PHP, MySQL] Codedesign

  Alt 6. Jul 2011, 23:43
Ich würde das auch so ähnlich wie shark beschrieben hat machen.
Alle Abfragen irgendwo sammeln ist nicht der richtige Weg.
Wenn du aber alles, was man irgendwie aus den Seiten extrahieren kann, in diese Getter / Setter-Funktionen auslagerst und sie in logische Gruppen / php-Dateien einordnest, die du evtl. auch noch dynamisch bei Gebrauch einbinden kannst, tust du dich im zweiten Schritt (irgendwann mal) auch leichter, das ganze in Klassen zu kapseln, wie es die grossen Frameworks wie Zend oder Symfony machen.

Generell kann man sich so ein MVC-ähnliches System auch ohne OOP zusammenbauen und im zweiten Schritt dann in OOP transferieren.

Geändert von blackfin ( 6. Jul 2011 um 23:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: [PHP, MySQL] Codedesign

  Alt 6. Jul 2011, 23:46
Na ja, ich lasse das jetzt erst mal ruhen. Ich habe das was ich will und es ist ja nur für mich. Den Code wird niemand anders zu sehen bekommen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

AW: [PHP, MySQL] Codedesign

  Alt 7. Jul 2011, 12:02
Hallo Luckie,

willst du deinen Code schöner machen, vor allem auch hinsichtlich SQL, dann ist Zentralisierung mit Sicherheit der falsche Weg. Allerdings gilt auch hier das gleiche, wie ich schon in diesem Thread schrieb.

Natürlich ist das anfangs (!) etwas mehr Aufwand. Aber es lohnt sich und macht Spaß. Also mein Vorschlag: Lass Code Code sein und versuche es im nächsten Projekt mal mit einem der genannten Frameworks. In der DP sind genügend Leute die dir damit helfen können.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz