php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 02-05-2010, 13:29
floorball92
 Registrierter Benutzer
Links : Onlinestatus : floorball92 ist offline
Registriert seit: Nov 2008
Ort: Germany->Hesse->Frankfurt
Beiträge: 15
floorball92 ist zur Zeit noch ein unbeschriebenes Blatt
floorball92 eine Nachricht über ICQ schicken floorball92 eine Nachricht über Yahoo! schicken
Standard [Stammtisch] Der Unsinn Namens Autoloader

Servus,

ich hatte letztens mal wieder eine interessante Diskussion mit mir selbst und bin zu dem Entschluss gekommen, dass Autoloader etwas sind, was der Entwickler eigentlich nie gebraucht hat!

Ich würde gerne dazu eine Art Stammtisch machen und kucken, was ihr dazu denkt.

Aber ich möchte erst mal dazu kommen, wie ich solch eine gewagte Aussage treffen kann:

Ein Autoloader ist dafür da, eine Klasse nachzuladen, die man während der Laufzeit verwenden möchte.

Jetzt ist natürlich die Frage, ob man nicht eigentlich schon vorher wissen sollte, welche Klassen man verwenden wird.

Eigentlich sollte diese Liste in einem modularen System nicht all zu groß sein und wenn man Stellen hat, an denen man eine Klasse verwendet und nicht sicher ist, ob diese nicht schon geladen ist, hat man eigentlich einen Fehler in seiner Architektur.

Ist ein Autoloader also nur für Leute da, die sich vorher zu wenig Gedanken über ihr gesamt Konzept gemacht haben?

Ich finde diesen Gedanken eigentlich ziemlich interessant.

Wie denkt ih dazu?

Gruß Sebastian
Mit Zitat antworten
  #2 (permalink)  
Alt 02-05-2010, 14:07
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ein Autoloader erspart dem Entwickler das Verkleckern von require_once-Anweisungen über die ganze Applikation.
Deshalb muss er auch nicht wissen, wo Klassen liegen.
Das wiederum gestattet es, die Klassen zu verschieben und nur an einer Stelle, dem Autoloader, Code anpassen zu müssen.
Mit Zitat antworten
  #3 (permalink)  
Alt 02-05-2010, 14:32
floorball92
 Registrierter Benutzer
Links : Onlinestatus : floorball92 ist offline
Registriert seit: Nov 2008
Ort: Germany->Hesse->Frankfurt
Beiträge: 15
floorball92 ist zur Zeit noch ein unbeschriebenes Blatt
floorball92 eine Nachricht über ICQ schicken floorball92 eine Nachricht über Yahoo! schicken
Standard

Was wiederum wieder die Frage aufkommen lässt, ob man sich vorher nicht genug Gedanken gemacht hat... Und in den meisten Systemen wird auch eine Namenskonvention wie in PEAR verwendet, wo Klassenname und Pfad zur Datei verknüpft sind, sodass dort dieses Argument ebenfalls nicht greift.
Mit Zitat antworten
  #4 (permalink)  
Alt 02-05-2010, 14:40
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Was hat das denn damit zu tun, ob man sich vorher Gedanken gemacht hat? Ich kann deiner Argumentation nicht folgen.
Mit Zitat antworten
  #5 (permalink)  
Alt 02-05-2010, 14:43
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Ein Autoloader ladet genau die Dateien, die man auch wirklich braucht. Gäbe es keinen Autoloader, müsste man sich ständig Gedanken machen, was jetzt geladen werden soll und was nicht. Im Zweifel wird dann einfach zuviel geladen, statt zu wenig, was wieder die Performance drückt. Außerdem nimmt ein Autoloader sehr viel Tipparbeit ab.

Stell dir vor, du programmierst in einer Klasse, die andere Klassen benötigt. Jetzt entfernst du einen bestimmten Code-Teil, weil er nicht mehr benötigt wird. In diesem Code-Teil wurde eine bestimmte Anzahl an Klassen verwendet. Du müsstest jetzt den kompletten Code von oben bis unten durchgehen und schauen, ob die Klassen sonst noch wo benötigt werden. Wenn ja, dann musst du das require_once im Code lassen, wenn nicht, musst du es entfernen. Wozu sich die ganze unnötige Arbeit selber antun?
Mit Zitat antworten
  #6 (permalink)  
Alt 02-05-2010, 16:34
floorball92
 Registrierter Benutzer
Links : Onlinestatus : floorball92 ist offline
Registriert seit: Nov 2008
Ort: Germany->Hesse->Frankfurt
Beiträge: 15
floorball92 ist zur Zeit noch ein unbeschriebenes Blatt
floorball92 eine Nachricht über ICQ schicken floorball92 eine Nachricht über Yahoo! schicken
Standard

Mit einer entsprechend guten Architektur hast du die Probleme aber nicht. Beispiel ist z.B. Zend. Im Zend FW wird auch am Anfang jeder Klasse alles manuell geladen.
Mit Zitat antworten
  #7 (permalink)  
Alt 02-05-2010, 16:43
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von floorball92 Beitrag anzeigen
Mit einer entsprechend guten Architektur hast du die Probleme aber nicht. Beispiel ist z.B. Zend. Im Zend FW wird auch am Anfang jeder Klasse alles manuell geladen.
Wenn die Architektur so gut ist, warum ist dann Zend dabei das FW auf Autoload umzubauen?
Mit Zitat antworten
  #8 (permalink)  
Alt 02-05-2010, 17:05
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Ist ein Autoloader also nur für Leute da, die sich vorher zu wenig Gedanken über ihr gesamt Konzept gemacht haben?
Blödsinn!
__________________
Wir werden alle sterben
Mit Zitat antworten
  #9 (permalink)  
Alt 03-05-2010, 00:25
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

hier noch mein Senf. Ich finde das Autoloading-Konzept der SPL toll. Die magische __autoload-Funktion konnte mich nie überzeugen, aber seit dem SPL-Autoloader mache ich jetzt alles darüber, zumal ich seit PHP 5.3 meine Klassen in Namespaces organisiere und ähnlich zu Java-Code mit use arbeiten kann, um andere Klassen zu importieren - und das ohne
  • ewig lange absolute Pfade anzugeben
  • abwärtskompatible relative Pfadangaben (dirname(__FILE__) . "/relativer/Pfad.php") machen zu müssen

PHP-Code:
namespace foo|bar;
use 
xyz|SomeClass;
use 
abc|def|SomeInterface;
class 
Example extends SomeClass implements SomeInterface { ... } 
(Das Forum akzeptiert keinen Backslash im PHP-Code, daher musste ich | nehmen.)

Einfach toll! Diese Sauberkeit soll mir mal jemand mit require_once vormachen.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #10 (permalink)  
Alt 03-05-2010, 10:59
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Schön argumentiert.
Aber auf Grund der polemischen Fragestellung würde ich keine Einsicht erwarten.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #11 (permalink)  
Alt 03-05-2010, 18:58
floorball92
 Registrierter Benutzer
Links : Onlinestatus : floorball92 ist offline
Registriert seit: Nov 2008
Ort: Germany->Hesse->Frankfurt
Beiträge: 15
floorball92 ist zur Zeit noch ein unbeschriebenes Blatt
floorball92 eine Nachricht über ICQ schicken floorball92 eine Nachricht über Yahoo! schicken
Standard

Hätte eigentlich erwartet, dass ich nicht ganz der einzige bin, der darüber mal nachgedacht hat und gewisse Argumente gegen den Autoloader dabei anerkannt hat.

Ich sage auch nicht, dass Autoloader schlecht sind, ich benutze ja selbst oft den SPL Autoloader, aber ich finde die Argumente gegen den Autoloader trotzdem sinnvoll und werde auch nach wie vor in Zukunft immer überlegen, ob ich einen Autoloader wirklich brauche.

Und noch mal von wegen undurchsichtiger Dokumentierung, wenn ich mein File habe, dort erst Dateikommentar, require_once Anweisungen, Klassenkommentar Klasse finde ich auch meinen Programm Code oder eher gesagt die eigentliche Logik vom einbinden sehr gut separiert.

In C++ wird es ja auch nicht anders gemacht.
Mit Zitat antworten
  #12 (permalink)  
Alt 03-05-2010, 19:09
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von floorball92 Beitrag anzeigen
Und noch mal von wegen undurchsichtiger Dokumentierung, wenn ich mein File habe, dort erst Dateikommentar, require_once Anweisungen, Klassenkommentar Klasse finde ich auch meinen Programm Code oder eher gesagt die eigentliche Logik vom einbinden sehr gut separiert.
Ist das dann nicht aber ein wenig doppelt gemoppelt? Also mir wär es zu blöd, alles doppelt schreiben zu müssen:

PHP-Code:
require_once 'library/foo.php';
require_once 
'domain/bar.php';

use 
library|foo;
use 
domain|bar

Geändert von h3ll (03-05-2010 um 19:11 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 03-05-2010, 19:11
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Hätte eigentlich erwartet, dass ich nicht ganz der einzige bin, der darüber mal nachgedacht hat und gewisse Argumente gegen den Autoloader dabei anerkannt hat.
Es gibt kein Argument gegen SPL Autoload!
Zumindest habe ich noch keins gehört.
Auch du hast keins gebracht.
Denn:
Zitat:
Ist ein Autoloader also nur für Leute da, die sich vorher zu wenig Gedanken über ihr gesamt Konzept gemacht haben?
*entschärft*
Man könnte sich darüber unerhalten, ob die SPL Autoload Implementierung optimal ist, was man noch verbessern könnte, usw...
*entschärft*
__________________
Wir werden alle sterben

Geändert von combie (03-05-2010 um 20:00 Uhr) Grund: entschärft
Mit Zitat antworten
  #14 (permalink)  
Alt 03-05-2010, 19:51
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Ab sofort herrscht hier wieder ein gemäßigter Ton. Sonst mache ich Thread dicht!

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #15 (permalink)  
Alt 04-05-2010, 00:04
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Das einzige - wohl eher an den Haaren herbeigezerrte und nicht von mir unterstützte - Argument gegen Autoloading wäre der Aufwand, die Autoloadfunktion bei jeder fehlenden Klasse aufzurufen. Dieser ist allerdings minimal. Da überwiegt die Entwicklungszeit, die require-Anweisungen korrekt zu setzen ganz bestimmt und die eingeschränkte Flexibilität gegenüber dem Autoloading.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SPL sinn und unsinn closure Off-Topic Diskussionen 1 27-03-2006 18:17
PHP Namens-Liste Acromus Apps und PHP Script Gesuche 10 31-01-2006 19:51
Tandberg LTO2 Autoloader Moqui Hardware 4 19-02-2004 12:40
[Unsinn] TheUser Off-Topic Diskussionen 14 05-06-2002 13:19
unset() - Sinn und Unsinn?! rafthilo PHP Developer Forum 2 06-04-2001 15:53

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:47 Uhr.