Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziedziczenie zmiennych, Tworzenie nowych zmiennych w funkcjach...
Czeladnik
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 30.04.2011

Ostrzeżenie: (0%)
-----


Witajcie,

mam problem dotyczący: http://php.net/manual/en/language.variables.scope.php

Chcę zrobić funkcje:
  1.  
  2. function funkcja()
  3. {
  4. global $cos;
  5. if(empty($cos))
  6. {
  7. $cos = 5;
  8. }
  9. }
  10.  
  11. Teraz przechodzimy do senda:
  12. funkcja();
  13.  
  14. Ale tutaj nadal $cos == 0


Chodzi ogólnie o to, że przed funkcja funkcja() nie ma określonej zmiennej globalnej $cos, ale po tym już jest.

Nie chodzi mi o rozwiązanie typu return $cos;, a później $cos = funkcja(). Futaj jest problem taki, że to ma być hook do mybb, gdzie nie ma dokładnej definicji tego.


Proszę o pomoc.


edit: Chcę jeszcze dopisać, że to raczej ma być coś w stylu, tworzenia przez funkcję nowej zmiennej, która będzie widoczna wszędzie...

Ten post edytował Czeladnik 30.04.2011, 18:03:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Używanie globali w funkcjach to niedobra praktyka. Jeśli chcesz mieć zmienną poza zasięgiem funkcji - zwróć ją w return. Jeśli ma to być wiele zmiennych - zwróć je jako tablicę. A jeśli funkcja sama korzysta z wartości spoza funkcji - przekaż je jako parametr. Tak się obecnie robi i powinno robić. Global jest złe bo powoduje chaos, gdyż nie wiadomo co się skąd wzięło i co tak naprawdę zawiera. A gdy jeszcze rżne funkcje w kodzie mogą ją zmieniać - to dopiero masz burdel i nie dojdziesz co i jak (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 21:07