Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przekazanie zmiennej do funkcji
Forum PHP.pl > Forum > Przedszkole
denis13wroc
Witam, mam nadzieje że moje pytanie będzie proste :-)

Chciałbym przekazać do funkcji wartość zmiennej ale nie przekazując jej jako parametr. Najlepiej pokaże to na kodzie.

  1. $zmienna = 999;
  2.  
  3. function sprawdz () {
  4.  
  5. if ($zmienna > 100) {
  6. $out = '$zmienna jest wieksza od 100';
  7. }
  8. return $out;
  9. }
  10.  
  11. echo sprawdz(); // I tutaj funkcja pokazuje mi prawidlowe info


Chodzi mi o to aby nie przekazywać zmiennej a uczynić ją widoczną dla funkcji, jeżeli istnieje taka możliwość to proszę o podpowiedź.
Pozdrawiam
nowofresh
To dodaj jeszcze warunek, że jeżeli zgadza się to pokazuje to co chcesz. elseif.
Zyx
Istnieje, ale nie powinno się tak robić, bo tak napisany skrypt przestanie Ci działać w PHP6, hehehe smile.gif. Inna sprawa, że jest to najprostszy sposób na rozwalenie sobie skryptu. Później będziesz chciał coś zmodyfikować i się nie połapiesz w tych skutkach ubocznych, jakie Twoje funkcje będą robić w różnych zmiennych. Jak chcesz coś przekazać do funkcji, to od tego masz argumenty i tyle, a nie kombinujesz jak koń pod górę i pijany słoń w składzie porcelany. Dlatego też nie podam Ci tego magicznego słowa kluczowego.
nowofresh
Cytat(Zyx @ 25.10.2010, 20:25:00 ) *
Istnieje, ale nie powinno się tak robić, bo tak napisany skrypt przestanie Ci działać w PHP6,


Poważnie. Dlaczego ?
Zyx
Hmmm... dobra, poprawka: chyba przestanie. Jest taki burdel z tym, co w końcu wejdzie do PHP6, że już sam się pogubiłem - w każdym razie gdzieś trafiłem na informacje, że to magiczne słówko ma wylecieć (i w sumie byłoby dobrze, gdyby tak się stało). Nie zmienia to jednak faktu, że jego używanie, zwłaszcza w dużych ilościach jest wybitnie nieeleganckie, świadczy o ujemnych umiejętnościach programistycznych i prowadzi często do ciężkich do znalezienia, egzotycznych błędów, że zmieniamy rzecz A, a tu nagle przestaje działać B.
nowofresh
Niech ktoś wyjaśni czego nie powinno się stosować aby nie jebnąć z PHP6.
denis13wroc
w sumie... wartość którą chcę przekazać nie musi być przypisana do zmiennej bo nie musi być ona modyfikowana, może to być 'stała'.
A tak na boku... to mogę prosić jednak o odpowiedź ?
nowofresh
global
denis13wroc
Z tego co testowałem... to global pomoże mi w przypadku takim:

  1. 1.
  2. $zmienna = 999;
  3.  
  4. function sprawdz () {
  5.  
  6. global $krzeslo = "tekst krzesla";
  7.  
  8. if ($zmienna > 100) {
  9. $out = '$zmienna jest wieksza od 100';
  10. }
  11. return $out;
  12. }
  13.  
  14. echo sprawdz(); // I tutaj funkcja pokazuje mi prawidlowe info
  15. echo $krzeslo;
zegarek84
a czy zamiast global'a to nie lepiej pchnąć w kierunku zmiennych statycznych?? - może od podstaw oop daleko ale... pozatym to też prawie global...
  1. // definija klasy - funkcja nie potrzebna ale... ;)
  2. class jakas {
  3. static public $zmienna = 999;
  4.  
  5. public static function mozeZTegoSkozysta() {
  6. $out = '';
  7. if (self::$zmienna > 100) {
  8. $out = '$zmienna jest wieksza od 100';
  9. }
  10. return $out;
  11. }
  12. }
  13. // CIAŁO LOGICZNE APLIKACJI - pomijając definicję klasy potrzebną przynajmniej bez funkcji
  14. echo jakas::mozeZTegoSkozysta(); // no tutaj definicja tej funkcji była potrzebna
  15. // jeśli z funkcjo statycznych nie skożystał to przynajmniej z takiej klasy jak z kontenera zmiennych globalnych - mniejsze zło ;p
  16. jakas::$zmienna = 222; // a inna wartość dla przykładu ;)
  17.  
  18. function sprawdz () {
  19.  
  20. if (jakas::$zmienna > 100) {
  21. $out = '$zmienna jest wieksza od 100';
  22. }
  23. return $out;
  24. }
  25.  
  26. echo sprawdz();

dalekie to od opp ale czy nie lepiej ukierunkowywać w tą stronęquestionmark.gif
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.