Konrad: require - parametrierbar?

Hallo,
kann man beim "require Datei" angeben, dass beim Einfügen ein Wert "a" in einen Wert "b" umgewandelt werden soll?
Hintergrund: Oft gibt es nur geringe Unterschiede zwischen den Dateien, so dass eine einzige sinnvoll wäre.
Gruß
Konrad

  1. Hallo,

    kann man beim "require Datei" angeben, dass beim Einfügen ein Wert "a" in einen Wert "b" umgewandelt werden soll?

    Nein, das ist nicht Aufgabe von require. Was genau meinst du mit Wert umwandeln? Einen Wert im Sinne von Variablen-/Eigenschaftswert oder im Sinne von Funktionsnamen oder gar unterschiedliche Code-Logik?

    Hintergrund: Oft gibt es nur geringe Unterschiede zwischen den Dateien, so dass eine einzige sinnvoll wäre.

    Das sollte im Code gelöst werden. Dateien können Klassen/Namensräume mit unterschiedlichen Funktionen definieren. Funktionen können verschiedene Parameter entgegen nehmen, um flexibel zu sein und ihr Verhalten zu steuern. Funktionen können verschiedene Datentypen entgegen nehmen und flexibel reagieren. Das ist gerade die Kunst dabei, wiederverwendbaren Code zu schreiben: Die Gemeinsamkeit finden und die mit den Unterschieden umgehen zu können.

    Mathias

  2. હેલો

    kann man beim "require Datei" angeben, dass beim Einfügen ein Wert "a" in einen Wert "b" umgewandelt werden soll?

    Wenn die Datei ersteinmal required ist, ist sie required. Werte sollten im Script geändert werden, nicht durch das blosse einbinden.

    Hintergrund: Oft gibt es nur geringe Unterschiede zwischen den Dateien, so dass eine einzige sinnvoll wäre.

    Kann ich nicht nachvollziehen, ein paar Beispiele?

    બાય

    --
     .
    ..:
  3. Hallo Konrad,

    dir ist bekannt, dass im per require() eingefügten Skript die im einfügenden Skript sichtbaren Variablen ebenfalls sichtbar sind?

    „When a file is included, the code it contains inherits the variable scope of the line on which the include occurs.“ (Quelle: PHP-Manual)

    Hier zwei Beispiele, was du damit machen kannst:

    • In file2.php kannst du auf $myvar zugreifen, wenn du die Variable zuvor in file1.php gesetzt hast.

    • In file2.php kannst du auch eine in file1.php gesetzte Variable (hier $require_file) verwenden, um eine weitere Datei einzubinden. Ich halte das allerdings für unübersichtlich und würde es vermeiden.

    <?php  
    // This is file1.php  
      
    $myvar = 'foo';  
      
    $require_file = 'hey.php'; // set to 'hey.php' or 'ho.php'  
      
    require('file2.php');  
      
    ?>
    
    <?php  
    // This is file2.php  
      
    echo "bar"; // statisch  
      
    echo $myvar; // "Parameterisiert"  
      
    require($require_file);  
      
    ?>
    
    <?php  
    // This is hey.php  
      
    echo "Hey!";  
      
    ?>
    
    <?php  
    // This is ho.php  
      
    echo "Ho!";  
      
    ?>
    

    Hilft dir das weiter? Wenn nicht, dann erkläre bitte, was genau du damit meinst, dass „ein Wert "a" in einen Wert "b" umgewandelt werden soll“.

    Viele Grüße
    Claudius

  4. hi,

    Hintergrund: Oft gibt es nur geringe Unterschiede zwischen den Dateien, so dass eine einzige sinnvoll wäre.

    Mir ist Dein Anliegen verständlich, geht aber so nicht zu machen mit PHP. Aber gucken wir mal in Richtung Perl, was da geht:

    use Foo qw(1 2 3 boo bar baz);

    Hier haben wir use, den Modulnamen und eine 'angehängte' Liste. In Foo wird somit die Funktion import() aufgerufen und bekommt die Liste qw(1 2 3 boo bar baz), was das weitere Verhalten der eingebundenen Klasse bestimmt.

    So etwas ähnliches könntest Du in PHP zumindestens nachbauen, es könnte sich lohnen darüber nachzudenken, etwa so, dass jede Deiner Klassen ein Interface mit der Methode import() implementiert.

    Einfacher und überschaubarer finde ich, die Klassen einfach nur, wie gehabt, mit require/include einzubinden und beim Initialisieren der Instanz die entsprechenden Parameter zu übergeben.

    Horst

    1. Mahlzeit,

      So etwas ähnliches könntest Du in PHP zumindestens nachbauen, es könnte sich lohnen darüber nachzudenken, etwa so, dass jede Deiner Klassen ein Interface mit der Methode import() implementiert.

      Meinst du nicht, in PHP wäre folgendes einfacher:

        
      // $b und $c gibt es nur in file.php  
      require "file.php";  
        
      $b = $a;  
      $c = 100; .....  
      
      

      Und wenn du ne Klasse einbindest, kannst du die Instanzierung durchaus auch in PHP mit Parametern machen. Da muss also nichts nachgebaut werden, schon lange alles da.

      --
      42
      1. hi,

        Und wenn du ne Klasse einbindest, kannst du die Instanzierung durchaus auch in PHP mit Parametern machen.

        Genau das habe ich geschrieben: hier ;)

        Nochmal?