Modify

Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#132 closed Bug/Fehler (fixed)

Probleme mit auto_require und dem Geltungsbereich von Variablen

Reported by: H. H. H. Owned by: Ronald Parcinski
Priority: hoch Milestone: modified-shop-2.0.0.0
Component: Shop Version: 1.06
Keywords: Cc:
Blocked By: Blocking:

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 by H. H. H., 12 years ago

Summary: Logische Probleme mit auto_require und Geltungsbereich von VariablenProbleme mit auto_require und dem Geltungsbereich von Variablen

comment:2 by Ronald Parcinski, 12 years ago

Resolution: fixed
Status: newclosed

gefixt in r5788

Last edited 12 years ago by H. H. H. (previous) (diff)

Modify Ticket

Action
as closed The owner will remain Ronald Parcinski.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.