Der Martin: PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss?

Beitrag lesen

Hallo,

Hast du denn auch daran gedacht, sie mit dem Schlüsselwort global in die Funktion(en) zu importieren?

habe ich bisher nicht versucht

schade, denn das ist notwendig, um aus einer Funktion heraus auf globale Variablen zugreifen zu können.

da hier einem davon abgeraten wird, wenn ich das richtig verstehe: Seit PHP 8.1.0 wird der Schreibzugriff auf das gesamte $GLOBALS-Array nicht mehr unterstützt.

Möglicherweise hast du das missverstanden. Erstens geht es tatsächlich nur um das Schreiben auf $_GLOBALS, zweitens ist der direkte Zugriff auf $_GLOBALS ja etwas "unbequem", und wenn man schon globale Variablen verwenden möchte, finde ich das explizite Bekanntmachen innerhalb der Funktion mit dem global-Keyword sauberer. Dann darfst du auch schreibend darauf zugreifen (auch wenn das bei mir immer ein bisschen Zähneknirschen hervorruft).

Aber Schreibzugriff brauchst du ja in deinem Fall auch gar nicht.

Aber Funktionen, die auf globale Variablen zugreifen, sind sowieso unschön. Wie wär's, wenn du $current im globalen Scope definierst und als Parameter an die Funktionen übergibst, die diesen Wert brauchen? Dann wäre nur im globalen Scope, der ja sowieso alles zusammenklebt, ein bisschen "Magic", aber alle Funktionen wären autark.

Also, übergeben würde ich den Paramter dann so, oder?

<?php

function game($current) { ?>

	<a class="<?= $current === null || $current === 'game' ? 'current' : ''; ?>" href="game">Spiel</a>

<?php }

Genau. Und beim Aufruf der Funktion game() dann auch den Wert übergeben.

Aber wo ist denn dieser global scope?

Das ist sozusagen alles, was sich außerhalb aller Funktionen und Klassen abspielt.

Ich bin noch nicht wirklich sehr vertraut mit PHP. In JavaScript wäre er ja außerhalb aller functions, aber bei PHP habe ich keine Ahnung.

Das ist in PHP ganz genauso. Der Unterschied ist, dass eine Funktion in Javascript auf globale Daten zugreifen darf, ohne dass man das extra regeln müssten; in PHP muss man es explizit erlauben.

Einen schönen Tag noch
 Martin

--
Мир для України.
0 60

PHP function: Wie umgehe ich, dass eine Variable jedes Mal erneut definiert werden muss?

borisbaer
  • php
  1. 0
    Rolf B
    1. 0
      borisbaer
      1. 1
        Raketenwilli
        • php
        • programmiertechnik
        • programmplanung
        1. 0
          borisbaer
          1. 0
            Raketenwilli
            1. 0
              borisbaer
              1. 0
                Raketenwilli
                1. 0
                  borisbaer
                  1. 0
                    borisbaer
                    1. 0
                      Raketenwilli
                      1. 0
                        borisbaer
                        1. 1

                          PHP-Syntax: Anführungszeichen

                          Gunnar Bittersmann
                          • php
                          1. 0
                            Der Martin
                            • programmierstil
                            • syntax
                            1. 1
                              Raketenwilli
                              1. 0
                                Der Martin
                              2. 0

                                Mein höchstpersönlicher Monk bricht aus mir heraus

                                Auge
                                • menschelei
                                • programmierstil
                                • syntax
                                1. 0
                                  Gunnar Bittersmann
                                  • menschelei
                                  1. 0
                                    Auge
                                2. 0
                                  Raketenwilli
                              3. 0
                                borisbaer
                            2. 0
                              Gunnar Bittersmann
                          2. 0
                            borisbaer
                        2. 0
                          Tabellenkalk
                          1. 0
                            Raketenwilli
                          2. 1
                            Gunnar Bittersmann
                            • php
                            • programmierstil
                            1. 0
                              Tabellenkalk
                              1. 0
                                Gunnar Bittersmann
                            2. 0
                              borisbaer
                              1. 0

                                Sollte, hyperliquide Prüfung

                                Raketenwilli
                                1. 0
                                  Raketenwilli
                                  1. 0
                                    Rolf B
                                    1. 1
                                      Raketenwilli
                                2. 0
                                  borisbaer
                                  1. 0
                                    Raketenwilli
                                    1. 0
                                      Rolf B
                                      1. 0
                                        Raketenwilli
                                        1. 0
                                          Rolf B
                                        2. 0
                                          Der Martin
                                          • dateisystem
                                          • meinung
                                          1. 0
                                            Gunnar Bittersmann
                                            • cms
                                            • dateisystem
                                      2. 0
                                        borisbaer
                              2. 1
                                Rolf B
                                1. 0
                                  borisbaer
                                  1. 0
                                    Rolf B
                                    1. 0
                                      Tabellenkalk
                                    2. 0
                                      Der Martin
                                      • menschelei
                        3. 1
                          Rolf B
                          1. 0
                            Der Martin
    2. 0
      Der Martin
      1. 0
        borisbaer
        1. 0
          Der Martin
          1. 0
            borisbaer
            1. 0
              Der Martin
              1. 0
                Rolf B
        2. 1
          Gunnar Bittersmann
          • aria
          • php
          1. 1
            Gunnar Bittersmann
            • php
            • sicherheit
          2. 0
            borisbaer
            1. 0
              Gunnar Bittersmann
  2. 0
    Rolf B
    1. 0
      Gunnar Bittersmann
      • barrierefreiheit