Variable aus Datei auslesen, aber funktionen nicht ausführen

hallo.
wie kann ich aus einer datei x eine variable y auslesen, ohne den rest der datei auszuführen und die restlichen datein ausführen?

beispiel:

datei x:

<?php $y = "test"; mail([...]);

grüße,
sebastian

Hi,

fopen(); wäre eine Möglichkeit…

Alternativ kannst du die Variable auch in einer anderen Datei festlegen und dann sowohl in X als auch in Y includieren :wink:

is das mit fopen nicht zu aufwendig?
das mit dem includieren hört sich eigentlich gut an, allerdings habe ich dann hinterher viel zu viele dateien und das includieren braucht ja auch zeit.

grüße,
sebastian

Warum hast du dann zu viele Dateien?
Eine Config-Datei, die die gesamte Konfiguration aufnimmt und von allen Skripts eingebunden wird sollte doch reichen?

nun ja, es geht dabei aber um eine datei pro extraseite in meiner blogsoftware.
bei meinem pluginsystem ist das einfacher, aber hier muss ich den “linknamen” (das hier zwischen mein ich) auslesen.

ich hab mir jetzt überlegt, dass ich eine variable vorm includieren setzte und hinterher wieder lösche, damit nur eine bestimmte variable ausgegeben wird, allerdings ist das auch nicht die optimallösung.

grüße,
sebastian

Natürlich ist das aufwendig - das ist dann halt der Preis, den du dafür zahlst, wenn du dir nicht überlegst, wie du deine Scripte anderweitig vernünftig strukturierst.

Dann sammle die Werte, die du brauchst, in einer Datei - und in einer vernünftigen Datenstruktur.

Du kannst nicht erwarten, eine Optimallösung zu finden oder genannt zu bekommen - wenn du vorher nicht erst mal das Problem/die Aufgabenstellung vernünftig beschreibst.

Wenn es ein Pluginsystem ist, kannst du ja einen installer schreiben, der alle Daten ausließt und dann in einer globalen Konfiguration speichert. So arbeiten zumindest viele CMS-systeme :wink:

also, ich schildere nochmal genau, was ich erreichen möchte:
auf meiner seite: lenzy.de/
dort wo “Seiten” steht (darunter: Impressum, Partner werden) werden aus einem ordner alle dateien ausgelesen. dies sind extraseiten, die neben dem normalen blog existieren bzw. in die man ohne großen aufwand selbst skripte hineinschreiben kann ohne veränderungen am blogsystem durchführen zu müssen.
damit die seiten ihren namen bekommen, muss in der jeweiligen datei eine variable ausgelesen werden, die später auch den der seite bereitstellt.
da ich aber nicht möchte, dass wenn man z.B eine mail funktion verwendet, diese zweimal versendet wird, wenn die seite aufgerufen wird (einmal seite an sich und einmal in navigation), muss ich die funktionen irgendwie blockieren oder eben nur die eine variable auslesen.

ich hoffe ihr versteht nun besser, was ich vorhabe.

grüße,
sebastian

Ja - aber es ist unsinnig.

Du versuchst hier dadurch, dass man nur Dateien in irgendein Verzeichnis packen muss, und das Script sich selbst um den Rest kümmert, m.E. am falschen Ende Programmkomplexität einzusparen.

Klar könntest du mit regulären Ausdrücken rangehen - aber was ist, wenn jemand jetzt nicht

in seiner Datei verwendet, sondern

…?

Entweder musst du dir dann sehr aufwendig noch die Inhalte auch der anderen Variablen besorgen (die vielleicht wiederum andere Variablenwerte enthalten, usw. usf.) - oder wirklich das Script ausführen lassen, um die tatsächlichen Werte zur Laufzeit zu erhalten.

Überlege dir lieber eine andere Möglichkeit, wo dein Script den Seitentitel herbekommen kann - entweder über einen Datenbankeintrag, ein separates Config-File - oder meinetwegen auch aus einer zusätzlichen Datei, die man neben der eigentlichen Seiten-Datei noch mit ins Verzeichnis packen muss, o.ä.

das mit der zusätzlichen datei ist wohl gar keine so schlechte lösung, so kann man entscheiden, welche der upgeloadeten dateien überhaupt angezeigt werden sollen.

danke euch :slight_smile:
sebastian

Und sonst solltest du das ganze eventuell in Klassen oder zumindest funktionen verpacken.
Dann gibt es eine Funktion für die Ausgabe, eine Funktion, um den Titel zu bekommen …

das is ja schon in einer funktion, aber die funktionen werden ja trotzdem aufgerufen

Wo wird denn da etwas aufgerufen?
main.php

require_once("seite.php") $title = get_title(); ... ... output_content();

seite.php

[code]<?php
function get_title() {
return $title;
}

function output_content() {
echo “Mein Inhalt”;
}
?>[/code]

stimmt, so hätte ich das auch machen können.
jetzt habe ich aber einen datensatz in der settings tabelle in der datenbank, in der dateiname, linkname und , ob die seite angezeigt werden soll, erstellt.
aber danke für die idee, hilft mir vielleicht an einer anderen stelle weiter.

grüße,
sebastian