Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#132 closed Bug/Fehler (fixed)

Probleme mit auto_require und dem Geltungsbereich von Variablen

Reported by: hacker Owned by: web28
Priority: hoch Milestone: modified-shop-2.0.0.0
Component: Shop Version: 1.06

Description

In den Dateien welche über auto_require eingebunden werden, dürfen keine Variablen definiert werden auf die im folgenden Code zugegriffen werden soll.

Beispiel JanoLaw?:

function auto_require(...) {
...
  // require 30_janolaw.php
  if (defined('MODULE_JANOLAW_STATUS') && MODULE_JANOLAW_STATUS == 'True') {
    require_once(DIR_FS_EXTERNAL.'janolaw/janolaw.php');
    $janolaw = new janolaw_content();
  }
...
}

Da dies in der Funktion auto_require() mit einem require eingebunden wird, ist ein Zugriff auf die JanoLaw? Klasse über $janolow ohne diese erneut zu initialisieren im folgendem Code nicht möglich.

Möglichkeiten um dieses Problem zu umgehen.

  1. Gleich auf Klassen und autoload umsteigen.
  2. auto_require nicht für Code verwenden, bei dem auf Variablen aus den auto_require Dateien im weiteren Scriptverlauf zugegriffen werden soll.
  3. Variablen innerhalb nur global deklarieren.
  4. Mit folgendem Konstrukt arbeiten und durch auto_require ein Array mit den einzelnen Dateien ausgeben.
    foreach(auto_require(..) as $file) require $file;
    

Für weitere Informationen bei php.net einfach mal nach variable scope suchen.

Attachments (0)

Change History (2)

comment:1 Changed 8 years ago by hacker

  • Summary changed from Logische Probleme mit auto_require und Geltungsbereich von Variablen to Probleme mit auto_require und dem Geltungsbereich von Variablen

comment:2 Changed 8 years ago by web28

  • Resolution set to fixed
  • Status changed from new to closed

gefixt in r5788

Last edited 8 years ago by hacker (previous) (diff)

Add Comment

Modify Ticket

Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.