Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przesyłanie danych
Forum PHP.pl > Forum > PHP
frankiejojo
Witam,
W celu kilkakrotnego wykorzystania kodu zrobiłem słowniki. Odwołuję się do nich za pomocą funkcji i "do połowy działa"
Skrypt wygląda tak:
  1. <?php
  2. $ObjectName=0;
  3. require "funkcje.php";
  4. echo $ObjectNameValue;      
  5. ?>

funkcje.php
  1. <?php
  2. function objectNameFunkcja() { global $ObjectName; global $ObjectNameValue; include 'objectNameSlownik.php';}
  3. ?>

i słownik:
  1. <?php
  2.      if($ObjectName==0){$ObjectNameValue = "jabłko";}
  3.      elseif($ObjectName==1){$ObjectNameValue = "gruszka";}
  4.      elseif($ObjectName==2){$ObjectNameValue = "śliwka";}
  5.      elseif($ObjectName==4){$ObjectNameValue = "ananas";}
  6. ?>


Pytanie:
Jak odwołać się do tego:
echo $ObjectNameValue;
Kshyhoo
Proszę zastosować poprawne bb-code do kodu PHP.
viking
To ze słownikiem nic wspólnego nie ma. Poczytaj o splenum i usuń te global.
6PJ9
A jak już chcesz tworzyć takie funkcje to lepiej tak zamiast milion ifów:

Plik objectNameSlownik.php:

  1. <?php
  2. //Te numery tutaj nie koniecznie bo tablice i tak są indeksowane od 0
  3. return [
  4. 0 => 'jabłko',
  5. 1 => 'gruszka',
  6. 2 => 'śliwka',
  7. 3 => 'ananas',
  8. ];




Plik funkcje.php:

  1. <?php
  2. function objectNameFunkcja(int $ObjectName): string
  3. {
  4. $objects = require('objectNameSlownik.php');
  5.  
  6. if(!isset($objects[$ObjectName])
  7. {
  8. throw new Exception('Invalid object name');
  9. }
  10.  
  11. return $objects[$ObjectName];
  12. }



I potem:

  1. <?php
  2. require('funkcje.php');
  3.  
  4. $ObjectName = 0;
  5. echo(objectNameFunkcja($ObjectName));


I nie pisz tagu zamykającego ?> bo jak ci się wkradną jakieś znaki po tym to się będziesz zastanawiał skąd się wzięły albo wywali ci błąd headers already sent.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.