SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 25.07.2004, 13:28:12
Dago Dago ist offline
Member
 
Registriert seit: Mar 2002
Beiträge: 548
Funktionen dynamisch erweitern

Hallo @ll,

da ich dem Parser möglichst viel Arbeit ersparen möchte, versuche ich meine PHP-Dateien

klein zu halten. Code welcher nicht bei jeder Anfrage durchlaufen wird, binde ich im

Fall der Fälle per include() ein.
PHP-Code:
<?php

switch ($page) {

    case 
1:
        include(
'page1.php');
        break;
    case 
2:
        include(
'page2.php');
        break;
    case 
3:
        include(
'page3.php');

}

?>
Kein Problem soweit.


Was mache ich aber, wenn eine Funktion (die auch mehrmals aufgerufen wird) auf diese

Weise erweitert werden soll?
PHP-Code:
<?php

function bla($extended FALSE) {

    if (
$extended)
        include(
'extended.fnc');

}

//Aufruf #1 - keine Erweiterung nötig
bla();

//Aufruf #2 - Erweiterung wird eingebunden
bla(TRUE);

//Aufruf #3 - Erweiterung wird erneut eingebunden :-(
bla(TRUE);

?>
Bei diesem Beispiel wäre das Skript bedeutend schneller, wenn man den include-Befehl gänzlich weglassen, und den Code aus extended.fnc direkt in die Funktion schreiben würde. Andererseits gibt es auch Fälle, in denen die Erweiterung überhaupt nicht benötigt wird - dann würde dieser Code umsonst geparst werden.

Was ich möchte: Wenn die Erweiterung einmal geladen und geparst wurde, soll sie "drin" bleiben. Ist das mit PHP überhaupt möglich?
Ich würde sagen, nein. Zend will schließlich den Performance Suit verkaufen.
Aber vielleicht hat jemand eine zündende Idee?

Thx,
Dago
Mit Zitat antworten
  #2  
Alt 25.07.2004, 13:57:36
mad-boy mad-boy ist offline
Junior Member
 
Registriert seit: Aug 2002
Beiträge: 395
mad-boy eine Nachricht über ICQ schicken
Hi,
versuchs mal mit require_once() oder include_once() statt dem normalen include() :)
Mit Zitat antworten
  #3  
Alt 25.07.2004, 14:12:48
Dago Dago ist offline
Member
 
Registriert seit: Mar 2002
Beiträge: 548
Wenn in der externen Datei eine Funktion oder eine Klasse oder sonstetwas "deklarierbares" stehen würde, wird include_once() funktionieren.

Aber ich möchte, dass extended.fnc auf der gleichen Ebene, wie die Funktion bla() operiert.
PHP-Code:
<?php

function bla($extended FALSE) {

     
$bla '';

     if (
$extended)
          include(
'extended.fnc');

     echo 
$bla;

}

bla(TRUE);
bla(TRUE);

?>

Inahlt extended.fnc:
<?php

$bla 
'OK!';

?>
Das muss so funktionieren.
Mit include() leider schwachsinnig, mit include_once() nur einmal funktionsfähig.
Mit Zitat antworten
  #4  
Alt 25.07.2004, 14:19:22
mad-boy mad-boy ist offline
Junior Member
 
Registriert seit: Aug 2002
Beiträge: 395
mad-boy eine Nachricht über ICQ schicken
Sorry, dann weiß ich auch nicht wie man das lösen kann! Man könnte höchstens die Variabeln globalisieren, aber das ist wohl kaum Sinn der Sache ^^

Soweit ich weiß wird alles innterhalb eines functions-blocks aber eh erst durchlaufen wenn die Funktion wirklich benötigt wird, die Zeit die dabei verloren geht dürfte also kaum eine Rolle spielen! :)
Mit Zitat antworten
  #5  
Alt 25.07.2004, 14:24:30
Dago Dago ist offline
Member
 
Registriert seit: Mar 2002
Beiträge: 548
Zitat:
Original geschrieben von mad-boy
Soweit ich weiß wird alles innterhalb eines functions-blocks aber eh erst durchlaufen wenn die Funktion wirklich benötigt wird, die Zeit die dabei verloren geht dürfte also kaum eine Rolle spielen! :)
Wenn du mit "durchlaufen" die runtime-execution meinst, stimmt.

Mir geht es aber um die parse-time. Der PHP-Parser schnappt sich alles, was die Datei hergibt. Er muss ja schließlich wissen, wo die Funktion aufhört.
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:34:46 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt