| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Bewertung: |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator und Wett-König | Hallo, ich würde kein trigger_error() verwenden, sondern eine Exception werfen. Ansonsten möchte ich den Code nicht beurteilen, da ich das Autoloading-Konzept für absoluten Schwachsinn halte. Es verstümmelt Klassen-Namen zwingt flache Strukturen auf und verhindert damit jedwede Freiheit hinsichtlich vernünftiger Strukturiering von Quellcode.
__________________ 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | ||
| Erfahrener Benutzer | Zitat:
könntest du das vieleicht etwas nähe begründen? Würde mich mal interessieren warum du so denkst und was du für die bessere Alternative hältst. Danke dir. Gruß Litter
__________________ Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir. http://www.lit-web.de | |
| | |
| | |
| Moderator und Wett-König | Hallo Alec32, hallo litter, der Autoload-Mechanismus von PHP ist die Idee, Klassen-Namen zu nutzen um die zugehörige Implementierung zu laden. Sofern der Anspruch besteht, den Code einer Anwendung hinsichtlich seiner Nutzung, seiner Bedeutung und seiner Abhängigkeit zu strukturieren, ist man gezwungen, diese Strukturen in den Klassen-Namen abzubilden. Seinen Höhepunkt erreicht das im Autoloading des ZF, in dem die Namespaces in den Klassen abgebildet sind (z.B. Zend_Foo_Bar, das auf Zend/Foo/Bar.php mappt). Damit sind Klassen-Namen nicht nur unaussprechlich, sondern IMHO auch falsch hinsichtlich des OO-Gadankens, die Realität abbilden zu wollen. Möchte ich mit Autoloading nun eine Klasse Frontcontroller aus dem Namespace core::frontcontroller laden müsste ich diese entweder Core_Frontcontroller_Frontcontroller nennen oder auf explizite Abhängigkeits-Definition (=require/include/...) ausweichen. Letzteres halte ich bei den aktuellen Mitteln, die mir PHP 5.2.X bietet für die deutlich bessere Variante. Sollte sich PHP 5.3.X in vielleicht einem Jahr durchgesetzt haben, so könnte man drüber nachdenken, Autoloading vielleicht doch zu nutzen, denn ein PHP-Code: PHP-Code: Aus eben den genannten Gründen setzt das APF auf statische Abhängigkeiten und verzichtet auf Autoloading. Sofern du eine vernünftige IDE einsetzt ist das auch weiter kein Problem, da ohnehin alle Klassen für intelli sense indiziert sind und du damit dahingehend keine Nachteile beim Entwickeln hast. Meiner Ansicht nach taugt Autoload/SPL Autoload solange nichts, bis nicht eine Integration von Namespaces stattgefunden hat und eine Klasse nicht mehr nur durch ihren Namen sondern vor allem durch ihren Namespace und Namen adressiert werden muss. In PHP 5.3.X ist das Adressieren ja schon möglich aber nicht zwingend notwendig. Nutzt man use, oder explizite Instanziierungen kann Autoloading nützlich sein, rund ist das Feature aber IMHO noch lange nicht. Bis dahin bleibe ich ein Fan von expliziten Abhängigkeiten. ![]()
__________________ 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| | |
| Erfahrener Benutzer | Das heißt du notierst im Code wo du es brauchst z.B. PHP-Code: Ich frage deshalb, weil ich grad anfange meine ersten Schritte mit MVC zu machen. Ich habe einen FrontController und lade da momentan durch Adressierung aus der URL meine Models, Subcontroller und Views die ich brauche. Das heist anhand eines in der URL stehenden Parameters. Diesen Parameter oder auch 2, jenachdem, habe ich dann in der Dateibenamung und im Klassennamen stehen. Momentan funktioniert das auch gut, aber wenn ich eben so deine Zeilen lese bekomme ich grad doch ein wenig Zweifel ob das so der richtige Weg ist.
__________________ Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir. http://www.lit-web.de |
| | |
| | |||
| Erfahrener Benutzer Registriert seit: 06.11.2008
Beiträge: 212
![]() | Zitat:
2. Ich hatte es erst im Konstruktor, habe dann allerdings die activate() eingepflegt weil ich vor dem aktivieren noch ein paar Sachen prüfen wollte (Einstellungen alle gültig etc.). Aber da dies direkt in den jeweiligen Methoden schon gemacht wird wird die activate() wieder in den Konstruktor verfrachtet. 3. Stimmt, sollte $strPath sein. Code den man Nachts um 3 produziert sollte man wirklich am nächsten Tag nochmal kontrollieren 4. Angewohnheit von mir. Ich prüfe stets mit === um Typenfehler zu vermeiden, bei dem preg_match() sehe ich es aber ein das es Schwachsinn ist. 5. Ich war lange am überlegen wie ich verdeutlichen kann woher $arrCache kommt, kam aber bislang nie auf eine Lösung, danke für den Denkanstoß. Wobei ich da das Vorgehen von nikosch eher bevorzuge. Das spart auch nochmal ein paar Bytes (PHP Tag etc.) und bindet mich nicht an eine .php Endung. Ansonsten muss ich sagen das dr.e mich zum nachdenken gebracht hat, besonders der folgende Satz Zitat:
| ||
| | |
| | ||||
| Moderator und Wett-König | @litter: Zitat:
Zitat:
Aus den genannten Gründen trennt das APF beispielsweise zwischen Front-Controller, der das gleichnamige Pattern generisch implementiert und einem Page-Controller, der sich um das (H)MVC kümmert. So kannst du den Front-Controller in vielen Applikationen ohne Software-Änderung einsetzen. Gleiches gilt für den Page-Controller, der noch dazu den Vorteil bietet, HMVC zu ermöglichen. Damit bist du noch ein Stück weiter unabhängig in deinem URL-Layout (siehe unten). Zitat:
Aus diesem Grund besitzt das APF beispielsweise Input- und Output-Filter, die das URL-Layout von einer externen Repräsentation in eine interne übersetzten können. So ist es ohne eine Zeile Software-Änderung möglich von einem auf das andere Layout zu switchen. Darf ich fragen, wie du dir MVC gerade zu gemüte führst? Nutzt du ein Framework oder eine eigene Implementierung?
__________________ 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! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |||
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Seite nur im Script aufrufbar | BlackScorp | PHP Tipps 2010 | 4 | 03.11.2010 15:57 |
| [Erledigt] Klasse aus einer anderen Klasse aufrufen | Tobby | PHP-Fortgeschrittene | 7 | 14.07.2010 20:05 |
| Autoload: Klasse wird nicht eingebunden, obwohl der Pfad stimmt | nuna | PHP Tipps 2010 | 7 | 04.06.2010 14:03 |
| [Erledigt] Nur einer bestimmten Klasse Zugriff andere Klasse erlauben | Turamisi | Software-Design | 2 | 20.02.2010 20:31 |
| Klasse für Objekteigenschaft erzeugen? | Asipak | PHP-Fortgeschrittene | 25 | 30.05.2009 19:45 |
| [Erledigt] Eine klasse einbinden | newWorldOrder | PHP Tipps 2009 | 2 | 23.02.2009 19:32 |
| Mini-Tutorial: Autoload Exception bei nichtgefundener klasse | brian johnson | Wiki Diskussionsforum | 10 | 23.01.2009 22:18 |
| Methode einer anderen Klasse aufrufen | Luka | PHP-Fortgeschrittene | 15 | 09.11.2008 14:19 |
| Klasse aus externer Klasse aufrufen | kostja | PHP Tipps 2008 | 8 | 07.08.2008 14:13 |
| Variable aus Klasse herausbekommen | GSJLink | PHP Tipps 2008 | 7 | 16.02.2008 22:25 |
| String-Parser Klasse - was muss rein? | Matze | PHP Tipps 2007 | 2 | 08.04.2007 22:14 |
| mehr als eine Klasse einbinden | Alpha Centauri | PHP-Fortgeschrittene | 4 | 13.04.2006 20:56 |
| Instanz einer Klasse in einer anderen Klasse verwenden | Buhmann | PHP-Fortgeschrittene | 7 | 28.10.2005 23:12 |
| [Erledigt] Führerschein für Klasse A+B.. Preis OK??? | Off-Topic Diskussionen | 20 | 13.07.2005 18:44 | |
| Klasse ändern | UniQ | PHP Tipps 2004 | 5 | 24.08.2004 14:46 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| java autoload class, php autoloader klasse, php autoload einbinden, php autoload, autoload klasse, eigene autoload klasse, php namespaces autoload tutorial, php klasse aus klasse einbinden autoload, php autoload klasse, create a mvc frontcontroller php 5.3, spl_autoload_register class hierarchie, __autoload php in klasse, php class autoloader, php autoload pfad anhand klassennamen ermitteln, meine autoload php tutorial, script automatische laden von dateien in php autoload, php nutzen von __autoload, php autoload class ablegen, namespace autoload variable klassen instanzierung, klassen automatisch einbinden autoload php |