Zurück   3DCenter Forum > Software-Hilfe Foren > Programmierung
Registrieren Hilfe Community Kalender Heutige Beiträge Suchen Uns unterstützen

Antwort
 
Themen-Optionen Ansicht
Alt 2006-10-03, 21:18:43   #1 (im Thread / einzeln)
Kabelsalat
Gold Member
 
Benutzerbild von Kabelsalat
 
Registriert: 2005-01-29
Beiträge: 631
Kabelsalat eine Nachricht über ICQ schicken Kabelsalat eine Nachricht über Yahoo! schicken
[PHP] Umgang mit Namenskonflikt

Guten Abend,

Ausnahmsweise muss ich mich heute auch einmal intensiver mit PHP auseinandersetzen. Anmerken sollte man, dass ich in Punkto PHP nur grundlegende Kenntnisse besitze - ansonsten bewege ich mich eher im Umfeld Asp.net, .Net, Java und WinAPI (dort würde ich mich dann auch eher als fortgeschritten bezeichnen)...

Nun zu meinem Problem: Ich schreibe gerade eine Funktion, die von PHP-Anwendung 1 aufgerufen wird. Diese Funktion muss allerdings auch auf PHP-Anwendung 2 zugreifen... dummerweise sind manche Funktions- und Variablennamen in beiden Anwendungen definiert, ein include auf einen Bestandteil der Anwendung 2 sorgt somit für Fehlermeldungen der Art "Cannot redeclare [...]". Wie kann ich nun auf Teile der Anwendung 2 ohne include zugreifen (also in seperatem Ausführungskontext)? Wie würdet ihr das Problem lösen?

Danke für die Hilfe

Kabelsalat

Kabelsalat ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-10-03, 21:30:50   #2 (im Thread / einzeln)
Kabelsalat
Gold Member
Threadstarter
 
Benutzerbild von Kabelsalat
 
Registriert: 2005-01-29
Beiträge: 631
Kabelsalat eine Nachricht über ICQ schicken Kabelsalat eine Nachricht über Yahoo! schicken
Re: [PHP] Umgang mit Namenskonflikt

Das Beispiel fehlt:

(foo.php)
PHP-Code:
function NameConflict()
{
    //...
}
(bar.php)
PHP-Code:
function NameConflict()
{
    //...
}
Aufruf:
PHP-Code:
// Aufruf der Funktion NameConflict in foo.php
include (foo.php);
NameConflict();

// Nun soll eine Funktion mit dem selben Namen in bar.php aufgerufen werden
include(bar.php);  // <- logischerweise kracht es hier
NameConflict();
Schön wäre es
PHP-Code:
$bar = include(bar.php);
bar.NameConflict();

Kabelsalat ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-10-03, 22:20:22   #3 (im Thread / einzeln)
darph
Insane Member
 
Benutzerbild von darph
 
Registriert: 2003-08-24
Ort: Nicht in Hof
Beiträge: 15.448
Re: [PHP] Umgang mit Namenskonflikt

Ich weiß nicht, wie ausgewachsen deine Applikation schon ist - aber eventuell kannste das ja noch in Klassen packen.

(foo.php)
PHP-Code:
class Foo {
    public static function NameConflict() 
    { 
        //... 
    }
}
(bar.php)
PHP-Code:
class Bar {
    public static function NameConflict() 
    { 
        //... 
    }
}

PHP-Code:
// Aufruf der Funktion NameConflict in foo.php 
include (foo.php); 
Foo::NameConflict(); 

// Nun soll eine Funktion mit dem selben Namen in bar.php aufgerufen werden 
include(bar.php);
Bar::NameConflict();

.(\ /)
.() ....This is sick darphinator. You give him eggroll and he will lophe you long time.
(> <)......
Darum gleicht jeder, der auf meine Worte hört und tut, was ich sage,
einem klugen Mann, der sein Haus auf felsigen Grund baut..........................

Geändert von darph (2006-10-03 um 22:24:19 Uhr)
darph ist offline Computer-Informationen von darph anzeigen   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-10-03, 22:26:12   #4 (im Thread / einzeln)
Kabelsalat
Gold Member
Threadstarter
 
Benutzerbild von Kabelsalat
 
Registriert: 2005-01-29
Beiträge: 631
Kabelsalat eine Nachricht über ICQ schicken Kabelsalat eine Nachricht über Yahoo! schicken
Re: [PHP] Umgang mit Namenskonflikt

Die Anwendungen sind leider fix...


Geändert von Kabelsalat (2006-10-03 um 22:31:10 Uhr)
Kabelsalat ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-10-03, 22:58:06   #5 (im Thread / einzeln)
darph
Insane Member
 
Benutzerbild von darph
 
Registriert: 2003-08-24
Ort: Nicht in Hof
Beiträge: 15.448
Re: [PHP] Umgang mit Namenskonflikt

Dann...

anstatt include den Inhalt der Bar.php auslesen und als string in eine Variable packen. Dort dann NameConflict suchen und ersetzen durch BarNameConflict und das dann durch eval() jagen.

Gewiß häßlich, könnte aber funktionieren.

.(\ /)
.() ....This is sick darphinator. You give him eggroll and he will lophe you long time.
(> <)......
Darum gleicht jeder, der auf meine Worte hört und tut, was ich sage,
einem klugen Mann, der sein Haus auf felsigen Grund baut..........................

Geändert von darph (2006-10-03 um 22:58:29 Uhr)
darph ist offline Computer-Informationen von darph anzeigen   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-10-03, 23:13:13   #6 (im Thread / einzeln)
Marscel
Avantgarde Member
 
Registriert: 2005-03-04
Ort: Regularistan
Beiträge: 5.696
Re: [PHP] Umgang mit Namenskonflikt

Wenn das die Lösung ist, würde ICH mir allerdings nochmal das Konzept des Scripts durch den Kopf gehen lassen...
Marscel ist offline Computer-Informationen von Marscel anzeigen   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-10-03, 23:14:40   #7 (im Thread / einzeln)
darph
Insane Member
 
Benutzerbild von darph
 
Registriert: 2003-08-24
Ort: Nicht in Hof
Beiträge: 15.448
(Foo.php)
PHP-Code:
<?php
function NameConflict() {
	echo("ich bin Foo.<br>");
}
?>
(Bar.php)
PHP-Code:
<?php
function NameConflict() {
	echo("ich bin Bar.<br>");
}
?>
(BarWrapper.php)
PHP-Code:
<?php
function loadFile($file) {
    $handle = fopen($file, "r");
    $text = fread ($handle, filesize($file));
    fclose ($handle);
    return '?>'.$text;
}

$fileContent = loadFile("Bar.php");
$fileContent = str_replace("NameConflict", "BarNameConflict", $fileContent);
eval($fileContent);
?>

(index.php)
PHP-Code:
<?php
include("Foo.php");
NameConflict();

include("BarWrapper.php");
BarNameConflict();
?>
Ausgabe:
Code:
ich bin Foo.
ich bin Bar.
Zitat von Marscel:
Wenn das die Lösung ist, würde ICH mir allerdings nochmal das Konzept des Scripts durch den Kopf gehen lassen...
Naja, aber wenn er das so vorgesetzt bekommt und der Chef sagt "mach was damit!"... was will man machen?

.(\ /)
.() ....This is sick darphinator. You give him eggroll and he will lophe you long time.
(> <)......
Darum gleicht jeder, der auf meine Worte hört und tut, was ich sage,
einem klugen Mann, der sein Haus auf felsigen Grund baut..........................

Geändert von darph (2006-10-03 um 23:16:48 Uhr)
darph ist offline Computer-Informationen von darph anzeigen   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-10-03, 23:23:01   #8 (im Thread / einzeln)
Kabelsalat
Gold Member
Threadstarter
 
Benutzerbild von Kabelsalat
 
Registriert: 2005-01-29
Beiträge: 631
Kabelsalat eine Nachricht über ICQ schicken Kabelsalat eine Nachricht über Yahoo! schicken
Re: [PHP] Umgang mit Namenskonflikt

Danke! Chef gibt es in diesem Fall zum Glück keinen Vielleicht finde ich ja auch noch eine alternative Lösung, aber Darph sei dank, habe ich jetzt zumindest einen möglichen Ansatz...

Kabelsalat ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Antwort

Lesezeichen
  • Dieses Thema bei Twitter speichern
  • Dieses Thema bei Facebook speichern


Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen 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 an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:28:54 Uhr.


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