Frage

Ich möchte so etwas in definieren php:

$EL = "\n<br />\n";

und verwende diese Variable dann als „Endzeilen“-Markierung auf meiner gesamten Website, etwa so:

echo "Blah blah blah{$EL}";

Wie definiere ich $EL einmal (in nur einer Datei), füge es auf jeder Seite meiner Website ein und nicht muss darauf verweisen (seltsamerweise rückwärts) global $EL; Anweisung in jeder Seitenfunktion?

War es hilfreich?

Lösung

Die meisten PHP-Sites sollten eine Datei (ich nenne sie einen Header) haben, die Sie auf jeder einzelnen Seite der Site einfügen.Wenn Sie diese erste Codezeile in die Header-Datei einfügen, fügen Sie sie auf jeder Seite wie folgt ein:

 include 'header.php';

Sie müssen nicht das globale Schlüsselwort oder ähnliches verwenden, die zweite Codezeile, die Sie geschrieben haben, sollte funktionieren.

Bearbeiten:Oh, tut mir leid, das funktioniert nicht innerhalb von Funktionen ...Jetzt sehe ich dein Problem.

Bearbeiten Nr. 2:Ok, befolgen Sie meinen ursprünglichen Rat mit der Kopfzeile, aber verwenden Sie a definieren() eher als eine Variable.Diese funktionieren innerhalb von Funktionen, nachdem sie eingebunden wurden.

Andere Tipps

Klingt nach der Aufgabe einer Konstanten.Siehe Funktion definieren().

Benutzen Sie PHP5?Wenn Sie die Funktion __autoload() definieren und eine Klasse mit einigen Konstanten verwenden, können Sie diese dort aufrufen, wo Sie sie benötigen.Das einzig Ärgerliche daran ist, dass man etwas etwas länger tippen muss, z

MyClass::MY_CONST

Der Vorteil besteht darin, dass Sie die Art und Weise, wie Sie mit neuen Zeilen umgehen, nur an einer Stelle ändern müssen, wenn Sie sich jemals dazu entschließen, sie zu ändern.

Ein möglicher Nachteil besteht natürlich darin, dass Sie eine zusätzliche Funktion (__autoload()) aufrufen und diese Funktion ausführen (wenn Sie auf die Klasse verweisen), die dann eine andere Datei (Ihre Klassendatei) lädt.Das ist möglicherweise mehr Aufwand, als es wert ist.

Wenn ich einen Vorschlag machen darf, wäre es, diese Art von Echo zu vermeiden, das Echoing-Tags erfordert (z. B <br />).Wenn Sie etwas vorlagenähnlicheres einrichten könnten, könnten Sie die NLs verarbeiten, ohne sie explizit eingeben zu müssen.Also statt

echo "Blah Blah Blah\n<br />\n";

versuchen:

<?php
if($condition) {
?>
<p>Blah blah blah
<br />
</p>
<?php
}
?>

Mir kommt es einfach so vor, als wäre das Aufrufen von Klassen oder das Einbinden von Variablen sowohl innerhalb als auch außerhalb von Funktionen eine Menge Arbeit, die nicht erledigt werden muss, und solche Situationen sollten, wenn möglich, am besten vermieden werden.

Mach das define ('el','\n\<\br/>\n'); Speichern Sie es als el.php

Dann können Sie alle Dateien einschließen, die Sie verwenden möchten, d. h

echo 'etwas'.el;// Beachten Sie, dass ich einfach el am Zeilenende oder davor einfüge

Ich hoffe das hilft

HINWEIS Bitte entfernen Sie das „\“ nach < br, da ich es einfügen musste, sonst wird das br-Tag nicht in der Antwort angezeigt ...

@svec Ja, das wird es, Sie müssen nur die Datei auch in die Funktion einbinden.So funktioniert der Großteil meiner Software.

function myFunc()
 {
require 'config.php';
//Variables from config are available now.
 }

Eine andere Möglichkeit besteht darin, ein Objekt mit öffentlichen statischen Eigenschaften zu verwenden.Früher habe ich $GLOBALS verwendet, aber die meisten Editoren vervollständigen $GLOBALS nicht automatisch.Außerdem sind nicht instanziierte Klassen überall verfügbar (weil Sie überall instanziieren können, ohne PHP mitzuteilen, dass Sie die Klasse verwenden werden).Beispiel:

<?php

class SITE {
    public static $el;
}

SITE::$el = "\n<br />\n";

function Test() {
    echo SITE::$el;
}

Test();

?>

Dies wird ausgegeben <br />

Dies ist auch einfacher zu handhaben als Konstanten, da Sie jede Art von Wert in die Eigenschaft einfügen können (Array, String, Int usw.), wohingegen Konstanten keine Arrays enthalten können.

Dies wurde mir von einem Benutzer auf der vorgeschlagen PHPEd-Foren.

svec, verwende ein PHP-Framework.Einfach irgendeins – davon gibt es jede Menge.Dies ist der richtige Weg.Mit Framework haben Sie einen einzelnen Einstiegspunkt für Ihre Anwendung. Daher ist es einfach und natürlich, standortweite Variablen zu definieren.Außerdem müssen Sie sich weder darum kümmern, Header -Dateien einzubeziehen, noch zu überprüfen, ob der Benutzer auf jeder Seite angemeldet ist. Das anständige Framework wird dies für Sie erledigen.

Sehen:

Investieren Sie etwas Zeit in das Erlernen einer davon und es wird sich sehr bald auszahlen.

Eine gängige IIRC-Lösung ist eine einfache Datei, die Ihre Deklarationen enthält und die Sie in jede Quelldatei einfügen, etwa „konstanten.inc.php'.Dort können Sie eine Reihe anwendungsweiter Variablen definieren, die dann in jede Datei importiert werden.

Dennoch müssen Sie die Include-Direktive bereitstellen jeden einzelne Quelldatei, die Sie verwenden.Ich habe sogar einige Projekte gesehen, die diese Technik nutzten, um Lokalisierungen für mehrere Sprachen bereitzustellen.Ich würde die Gettext-Methode bevorzugen, aber vielleicht ist diese Variante für den Durchschnittsbenutzer einfacher zu handhaben.

bearbeiten Für Ihr Problem empfehle ich die Verwendung von $GLOBALS[], sehen Beispiel #2 für Details.

Wenn das immer noch nicht anwendbar ist, würde ich versuchen, PHP5-Objekte auszugraben und ein statisches Singleton zu erstellen, das die benötigten statischen Konstanten bereitstellt (http://www.developer.com/lang/php/article.php/3345121)

Sitzungen sind die beste Wahl, wenn die Daten benutzerspezifisch sind. Andernfalls verwenden Sie einfach eine Konfigurationsdatei.config.php:

<?php
$EL = "\n<br />\n";
?>

Dann auf jeder Seite hinzufügen

require 'config.php'

Dann können Sie auf dieser Seite auf $EL zugreifen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top