Zitat von axo
Ankündigung
Einklappen
Keine Ankündigung bisher.
Abfrage: Klasse bereits includiert?
Einklappen
Neue Werbung 2019
Einklappen
X
-
-
Zitat von SaraneusWen interessiert der Unterschied in PHP?
ich bin grad (seit einem jahr) an einem projekt mit 175.000+ codezeilen dran, und da kann ich dir sagen, dass es wichtig ist, garantieren zu können, das zumindest ein lint check funktioniert, bevor man etwas an den kunden ausliefert.
Kommentar
-
Aber daran ändert sich doch nichts, wenn man statt include_once require_once verwendet ...jedenfalls seit etlichen Versionen schon nicht mehr.
Kommentar
-
Und im Changelog steht, dass mit dieser Version überhaupt erst include/require_once hinzukam. Also bei den beiden gab es wohl nie einen Unterschied in diesem Bezug
Kommentar
-
ach, das meine ich doch gar nicht.
mal als beispiel:
PHP-Code:<?php
require_once('class.A.php');
require_once('HTML/QuickForm.php'); // erste variante
class B extends A{
function getForm() {
require_once('HTML/QuickForm.php'); // zweite variante
$form = new HTML_QuickForm();
....
}
function doSomething() {
return rand(1,100);
}
}
?>
header-bereich der klassendatei) ein fehlendes (oder falsch
geschriebendes ) require hat, bekommt man den 'fatal error'
bereits, sobald man ein include von B macht, und nicht erst,
wenn man $b -> getForm() ausführt.
die zweite variante ist natürlich besser - ein nicht benötigtes
require_once() weniger und damit weniger overhead.
das gilt aber nur solange man ganz sicher weiß (und garantieren
kann), dass $b -> getForm() auch durch einen testfall aufgerufen
wird. weiß man das nicht, halte ich die erste methode für 'besser',
weil ein fehlendes oder falsch geschriebenes include mit höherer
wahrscheinlichkeit beim testen auffällt. darüberhinaus würden
auch parse errors in den benutzten klassen im zweiten fall erst
beim aufruf auffallen.
das meine ich mit 'compile time' vs. 'runtime' ...
Kommentar
-
-
Zitat von DerDesianGerade für 'größere' Projekte braucht man eine derartige Zentralisierung, wenn man nicht SpagettiCode haben will.
Du erstellst eine Instanz einer Klasse und bindest dann in der __autoload()-Funktion die entsprechende datei ein.
Mein auto_prepend_file wäre "leicht" lang, wenn ich alle Dateien, die ich benötige einbinden würde.
Und warum sollte ich die Klasse vB_News einbinden, wenn ich sie gar nicht brauche?
Ich bin da lieber flexibel.
Grüße Ben.[b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]
Kommentar
-
Zitat von BruchpilotUnd im Changelog steht, dass mit dieser Version
überhaupt erst include/require_once hinzukam. Also bei den beiden gab es
wohl nie einen Unterschied in diesem Bezug
4.0 RC1 27-Mar-2000 require-once() und include_once()
4.0 22-May-2000
4.0.2 29-Aug-2000 gleiches Verhalten
Zitat von axodie zweite variante ist natürlich besser - ein nicht benötigtes
require_once() weniger und damit weniger overhead.
das gilt aber nur solange man ganz sicher weiß (und garantieren
kann), dass $b -> getForm() auch durch einen testfall aufgerufen
wird. weiß man das nicht, halte ich die erste methode für 'besser',
weil ein fehlendes oder falsch geschriebenes include mit höherer
wahrscheinlichkeit beim testen auffällt.
Ich bevorzuge übrigends auch __autoload(). Ist einfach eine feine Sache, die Sorge, das der Code auch geladen wird einer Maschine zu überlassen. Für sowas sind diese Dinger doch da, oder?
Basti
Kommentar
Kommentar