php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.01.2010, 07:39  
Neuer Benutzer
 
Registriert seit: 20.11.2009
Beiträge: 10
PHP-Kenntnisse:
Anfänger
setech befindet sich auf einem aufstrebenden Ast
Standard index aufbau - wie macht man es richtig?

Nabend,
ich steige im Moment wieder in PHP ein nach einer längeren Pause. Inzwischen hat sich etwas im PHP Universum getan, damals war es ja mehr oder weniger üblich für jede "Sektion" eine eigene Datei anzulegen (news.php, member.php usw.). Jedoch habe ich nun bei mehreren gesehen dass sie die Index Datei mehr oder weniger als Bootstrap-Datei verwenden und dort einfach nach dem Userwunsch agieren. Das Konzept dazu gefällt mir ganz gut, nur wie macht man es "richtig"? mir ist bewusst dass es nicht DIE perfekte Lösung gibt, jedoch gibt es bestimmt ein paar bessere als meine
Ich habe es mir nun so gedacht:
In die Datenbank schreibe ich alle "Module" rein die die Seite hat (so eine Art mini pluginsystem für später) diese packe ich in einem Array mit dem urlnamen als jeweiligen key. Danach überprüfe ich ob es einen Key gibt der sich genauso nennt der vom user gewünscht wurde. Wenn dies der Fall ist inkludier ich die Datei und instanziiere eine neue Klasse (
PHP-Code:
$page = new $userwantpage
) und die Action dann halt einfach mit
PHP-Code:
$page->$action(); 
Das ist denke ich mal keine wirklich gute Lösung da ich erst mal alle Module in einem Array packe (Performance und speicherverbrauch?) und diesen dann nochmal durchgehe und gucke ob ein passender vorhanden ist... außerdem wird keine Seite included wenn die Seite nicht haargenau so geschrieben wird wie ich es genannt habe...

Wäre nett wenn mir ein paar Rangehens weisen gezeigt werden.
cya setech

mal einen genaueren ausschnitt...
PHP-Code:
if(file_exists($file))
{
    if(include_once(
$file))
    {
        
$class = new $page;
        if(
method_exists($class$action))
        {
            
$class->$action();
        } else {
            
$class->main();
        }
    }
} else {
    echo 
"Datei gibt es nicht";


Geändert von setech (01.01.2010 um 07:43 Uhr).
setech ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.01.2010, 12:21  
Neuer Benutzer
 
Registriert seit: 25.10.2009
Beiträge: 23
PHP-Kenntnisse:
Fortgeschritten
Babbsdrebbler befindet sich auf einem aufstrebenden Ast
Standard

Schau dir mal dieses Forum genauer an.
Jeder 2. Thread hat ungefähr dieses Thema.

Schau dir das APF an und die Stichwörter MVC/HMVC oder PAC an.

Hier wird dir keiner mehr eine Antwort dazu schreiben, sondern nur noch auf genannte Lektüre verweisen.

Schönes neues.
Babbsdrebbler ist offline   Mit Zitat antworten
Alt 02.01.2010, 03:15  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.576
PHP-Kenntnisse:
Fortgeschritten
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Ich denke, dieses Tutorial ist ein ganz guter Einblick, was so state of the art bei den gängigeren Frameworks ist: Akra’s DevNotes - Tutorial: Getting Started with Zend Framework 1.9
mermshaus ist gerade online   Mit Zitat antworten
Alt 02.01.2010, 04:02  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.127
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

beim Aufruf des Links stürzt Firefox ab - "state of the art" ?
Koala ist offline   Mit Zitat antworten
Alt 02.01.2010, 21:17  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Bei mir nicht...
xm22 ist offline   Mit Zitat antworten
Alt 02.01.2010, 21:19  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.248
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Art of the state

Bei mir auch nicht.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 02.01.2010, 23:41  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo setech,

deiner Beschreibung nach zu Urteilen, suchst du ein Instrument, mit dem auf dynamische Art und Weise Inhalte auf einer Seite dargestellt werden können. Dies soll abhängig von "Modulen" sein, jedoch über URL, Session und die Module selbst geregelt und gesteuert werden können.

Hierzu benötigst du eine Basis, die zum einen ein "Modul" und dessen Schnittstellen defiert, eine Komponente, die das Zusammenspiel dieser regelt und eine Plattform, die es ermöglicht, Module effizient und konsequent umzusetzen.

In diesem Bereich hat sich das HMVC-Entwurfs-Muster bewehrt. In unserem Adventkalender hat der Nikolaus ein Kapitel (23: Hierarchisch Modell gestanden) dazu verfasst. Im Software-Design-Forum gab es dazu schon jede Menge Diskussionen. Beispielsweise hier (Front-Controller und MVC Verständnisprobleme) oder auch hier (erweitertes Controlling (MVC)). Ich denke, hieraus kannst du dir genug Anregung holen, wie ein derartiges System funktionieren muss und welche notwendigen Mittel verfügbar sein müssen.

Wie Babbsdrebbler schon sagte, kann ich dir das APF ans Herz legen. Dieses verfügt mit dem Page-Controller über eine Komponente, die 100%iges HMVC untertützt und die notwendigen Schnitttstellen für die Modul-Entwicklung besitzt. Schau mal unter diesem oder jenem Link, dort wird vorgestellt, wie eine Seite aufgebaut werden kann.

Solltest du konzeptionelle Fragen haben, können wir das gerne hier diskutieren. Ich möchte jedoch vermeiden - wie Babbsdrebblerschon sagte -, dass wir das Thema zum x-ten Mal durchkauen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 03.01.2010, 02:05  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.127
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Bei mir auch nicht.
jetzt bei mir auch nicht mehr - entweder wurde die Website geändert oder mein FF hatte sich verschluckt.

Schade - das Tutorial bringt mir mal wieder nichts weil es einen eigenen Server voraussetzt.

Für Trockenübungen unter XAMPP/localhost ist es vielleicht ganz witzig.

Geändert von Koala (03.01.2010 um 02:12 Uhr).
Koala ist offline   Mit Zitat antworten
Alt 03.01.2010, 06:48  
Neuer Benutzer
 
Registriert seit: 20.11.2009
Beiträge: 10
PHP-Kenntnisse:
Anfänger
setech befindet sich auf einem aufstrebenden Ast
Standard

Erstmal vielen Dank für die Antworten.
Im Prinzip stehe ich dem Thema Frameworks offen gegenüber, jedoch habe ich ja wie gesagt nun eine etwas längere Abstinenz von PHP gehabt und bin somit etwas eingerostet. Da die Lernkurve meines Erachtens wesentlich besser ausfällt wenn ich es komplett selber mache wollte ich es halt gern selbst erledigen.
HMVC, PAC und MVC sind mir keine Fremdwörter, denn ich habe bis vor kurzem noch mit ROR sowie Python + Django gearbeitet welches auf diese Konzepte aufbauen (zumindest mehr oder weniger ) Wobei ich sagen muss das es mir die Idee die hinter Django steckt sehr angetan hat (gibt es da was Vergleichbares für PHP?)
Ich werde mal versuchen, es in etwa so aufzubauen wie es bei Django ist… eine index Datei die auf die URL Parameter reagiert => controller, action und Zusätzliche paras. Zunächst wird geguckt ob es überhaupt einen Controller gibt der mit dem gewünschten übereinstimmt, sollte dies zutreffen wird die Action aufgerufen (wenn vorhanden) und die Zusätzlichen Parameter übergeben.
Das Konzept hat m.E. nur ein „klitzekleines“ Problem… wird ein Controller aufgerufen den es nicht gibt (oder schleicht sich ein typo ein) wird nix gefunden, jedoch sollten die Links ja eigtl. durch die Seite selbst erstellt werden, und somit ja auch fehlerfrei sein (ist doch so, oder? )
Mal ein rudimentäres Beispiel wie ich es meine:
Index:
PHP-Code:
if(is_dir(APP_PATH.$controller.'/')
   {
    
$controllerfile APP_PATH.$controller.'/';
    if(
file_exists($controllerfile.$controller.'.php'))
    {
        include_once(
$controllerfile.$controller.'.php');
        
$con = new $controller();
        if(
method_exists($con$action))
        {
            
$con->$action();
        } else {
            
$con->index();
        }
    }
    
//Error
   
}
   
//Error 
(natürlich muss hier noch sichergestellt werden das man das Hauptverzeichniss nicht verlassen kann damit niemand ausbrechen kann...)
news Controller
PHP-Code:
class News extends BaseController
{
var 
$classname;
var 
$newsid 0;
...
function 
index(){}
function 
show($id){}
...

und der BaseController enthällt dann die allgemeinen sachen, wie zb eine art Flash-Error-Message Handler etc.

Wäre sowas überhaupt möglich, und würd es sinn machen?
oder soll ich es lieber so machen das ich auf der index den Basecontroller mir erzeuge und in diesem dann im constructor überprüfe ob $action, $controller,... definiert is und das dann durch autoload laden lasse?

Geändert von setech (03.01.2010 um 07:01 Uhr).
setech ist offline   Mit Zitat antworten
Alt 03.01.2010, 12:08  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Dieses Prinzip wird durchaus öfters verwendet. Schau dir mal das Zend Framework an. Da hast du genau die URL Struktur /<controller>/<action>/<paramKey1>/<paramValue1> usw.

Cakephp macht es ebenfalls auf diese Weise.
Flor1an ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
parameter von interfaces in klassen richtig mit anwenden? litterauspirna PHP Tipps 2009 27 30.06.2009 20:58
[Erledigt] MYSQL INDEX Frage 700.000 Datensätze ? c01001 Datenbanken 2 20.04.2009 13:55
Index richtig setzen stayInside Datenbanken 7 30.01.2009 09:43
[Erledigt] Javascript-Code in einem document.write richtig durchführen + richtiges Po BartTheDevil89 JavaScript, Ajax und mehr 15 29.11.2008 14:08
php datei löschen djscaleo PHP Tipps 2008 21 14.11.2008 15:47
Undefined variable Undefined property: block xxJJxx PHP Tipps 2008 16 05.08.2008 15:30
Index zerschossen Tommi PHP Tipps 2008 5 13.06.2008 18:04
Notice: Undefined index Kein Genie PHP Tipps 2008 5 23.04.2008 17:40
Prototype Ajax Array Datenmüll notyyy HTML, Usability und Barrierefreiheit 2 08.04.2008 10:57
Fehlermeldung richtig beheben! winki PHP Tipps 2006 9 25.08.2006 10:56
Variable wird nicht richtig übergeben PHP Tipps 2005 17 16.01.2005 16:51
[Erledigt] Elementare Frage: Schneller durch Index? - Bin ratlos! Datenbanken 1 16.12.2004 05:23
Undefined index: USERNAME PHP Tipps 2004-2 2 07.12.2004 17:47
Undefined index: PHP Tipps 2004 6 15.09.2004 12:00
wie definiert man die index? PHP Tipps 2004 4 09.06.2004 14:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php aufbau, aufbau index.php, index.php aufbau, php index aufbau, was macht man mit php, index aufbau, aufbau php, aufbau einer index.php, aufbau index, wie macht man einen index, aufbau eines index, wie macht man php, php hmvc tutorial, indexaufbau, aufbau index php, index aufbauen, index php aufbau, wie macht man index, aufbau der index.php, aufbau einer index

Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum