Gleicher Funktionsname - 2 Projekte

ThiKool

Erfahrenes Mitglied
Hallo Leute,

ich habe eine Frage bzw. ein Problem:

Ich möchte in Projekt A Projekt B per include / require einbinden. Projekt B hat teilweise Funktionen, die gleich heißen wie Funktionen in Projekt A, allerdings andere Anweisungen enthalten können.

Genauso verhält es sich mit Variablen die z.B. in der Config Datei hinterlegt sind.

Welche Möglichkeit gibt es, Projekt B zu includen - allerdings ohne dessen Funktionen und Variablen zu vermischen?

Danke und viele Grüße
 
Ah ok danke,

Namespaces hatte ich mir schonmal angeschaut.

Muss ich dann wirklich immer den NS und die Klasse vor die Funktion schreiben (echo \feline\Cat::says()), oder gibt es ne Möglichkeit nur die Funktion zu schreiben (echo says())?

und wie würde das bei ganz normalen Variablen aussehen?
 
Es gibt die Möglichkeit mit use die Funktion im aktuellen Namensraum ohne Präfix zu nutzen oder sogar den Namen der Funktion lokal zu ändern:
PHP:
use \feline\Cat;
Cat::says();
Nebenbei: In Deinem Fall ist Cat kein Namensraum, sondern der Name einer Klasse. Diesen kannst Du nicht weglassen.
 
Ok vielen Dank,

hab mich geade eingelesen und probiert, funktioniert soweit! :)

Ich glaube ich hab aber einen anderen großen Fehler gemacht: Und zwar hab ich in Projekt A in der Config Konfigurationsvariablen definiert z.B.

$waiting_time = 300;

oder auch

$price['car']['audi'] = 200;
$price['car']['skoda'] = 50;

Diese werden natürlich nun auch, soweit sie vorkommen, vom includeten Projekt B überschrieben.

Habt ihr noch einen Tipp wie ich das sauber lösen kann? Vor allem mit den Arrays?


Vielen Dank nochmal
 
Deswegen sollte man globale Variablen vermeiden.

Variablen kannst du auch in Namensräume packen.
 
Das mit den Variablen in einen Namespace packen geht aber nur wenn ich eine Klasse darum lege oder verstehe ich das falsch?
 
In einem Namespace kann alles drin sein
Variablen Funktionen, Klassen...
(und jeweils direkt, ohne Klassenzwang)
 
Kannst du mir mal bitte ein Beispiel geben?

So hab ichs verstanden und so funktionierts auch mit funktionen:

Main Datei:
Code:
<?php
namespace MAIN;
$test = "main";

echo $test."<br>";
include "include.php";
echo $test."<br>";

Include Datei:
Code:
<?php
namespace EXTERN;

$test = "include";

echo $test."<br>";


Das Ergebnis ist:
main
include
include

also sprich $test wird überschrieben
 

Neue Beiträge

Zurück