$ und nicht $, Variablen in PHP

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
wuschba
Mitglied
Beiträge: 38
Registriert: 22.04.2008 19:14

$ und nicht $, Variablen in PHP

Beitrag von wuschba »

Hallo!

Ich würde gerne einmal wissen, was der Unterschied zwischen dem Setzen einer Variable mit und ohne Dollarzeichen ist:
<!-- DEFINE myVar = 2 -->
<!-- DEFINE $myVar = 2 -->
... ist ja beides möglich.

Ich habe auch schon mit <!-- DEFINE $myVar = 2 --> und dann <!-- IF $myVar == 2 --> Abfragen hinbekommen. Nun müsste ich myVar jedoch über PHP setzen. Leider scheint:

Code: Alles auswählen

$template->assign_vars(array(
					'$myVar' => 2
				));
nicht zu funktionieren, aber auch bei:

Code: Alles auswählen

$template->assign_vars(array(
					'myVar' => 2
				));
passiert nichts. Wie setze ich eine Variable mit $ vorne dran in PHP?
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: $ und nicht $, Variablen in PHP

Beitrag von BNa »

Hallo wuschba,

ich glaube, ich weiss, warum das nicht funktioniert.

In Deiner php solltest Du das so eintragen.

Code: Alles auswählen

$template->assign_vars(array(
        'S_VARIABLE_2' => ($myvar == '2') ? true : false
				));
$myvar muss dazu vorher in einem Switch oder einer Abfrage definiert worden sein.

Zum Beispiel:

Code: Alles auswählen

if ($variable1 == variable2)
{
$myvar = '2':
}
Weist Du vorher definierte Werte dynamisch zu, dann kannst Du das auch so machen.

Code: Alles auswählen

$template->assign_vars(array(
        'S_VARIABLE_' . $myvar  => true
				));
Du musst nur darauf achten, das $myvar vorab immer korrekt gefüllt wird.

Das kann dann im Template abgefragt werden. Das gilt für beide dargestellten Codebeispiele.

Code: Alles auswählen

<!-- IF S_VARIABLE_2 -->
Viele Grüsse, Bna
wuschba
Mitglied
Beiträge: 38
Registriert: 22.04.2008 19:14

Re: $ und nicht $, Variablen in PHP

Beitrag von wuschba »

Hallo Bna,

danke für Deine Antwort. Mein Problem ist, dass eben evtl. die Variable vorab noch nicht definiert wurde.

Ich habe es jetzt so gelöst (in der Hoffnung, dass es kein allzu großer Hack ist):

Code: Alles auswählen

$template->_tpldata['DEFINE']['.']['myVar'] = 2;
Dann kann ich mittels <!-- IF $myVar darauf zugreifen und ggf. die Variable auch mittels <!-- DEFINE $myVar statt über PHP setzen.
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: $ und nicht $, Variablen in PHP

Beitrag von nickvergessen »

wuschba hat geschrieben:Ich habe es jetzt so gelöst (in der Hoffnung, dass es kein allzu großer Hack ist):

Code: Alles auswählen

$template->_tpldata['DEFINE']['.']['myVar'] = 2;
Dann kann ich mittels <!-- IF $myVar darauf zugreifen und ggf. die Variable auch mittels <!-- DEFINE $myVar statt über PHP setzen.
Doch eigentlich schon ;)

Am besten guckst du dir mal diesen Link an:
http://wiki.phpbb.com/display/DEV/Template.assign+vars

Das wichtigste ist wohl, das alle Variablen im Normalfall in GROßBUCHSTABEN geschrieben werden. Ich weiß grad nicht, ob das dein Problem sogar ist.
kein Support per PN
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“