denis13wroc
25.10.2010, 19:20:47
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.
$zmienna = 999;
function sprawdz () {
if ($zmienna > 100) {
$out = '$zmienna jest wieksza od 100';
}
return $out;
}
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
25.10.2010, 19:23:49
To dodaj jeszcze warunek, że jeżeli zgadza się to pokazuje to co chcesz. elseif.
Istnieje, ale nie powinno się tak robić, bo tak napisany skrypt przestanie Ci działać w PHP6, hehehe

. 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
25.10.2010, 19:28:11
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 ?
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
25.10.2010, 19:34:02
Niech ktoś wyjaśni czego nie powinno się stosować aby nie jebnąć z PHP6.
denis13wroc
25.10.2010, 19:55:23
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ź ?
denis13wroc
25.10.2010, 20:08:26
Z tego co testowałem... to global pomoże mi w przypadku takim:
1.
$zmienna = 999;
function sprawdz () {
global $krzeslo = "tekst krzesla";
if ($zmienna > 100) {
$out = '$zmienna jest wieksza od 100';
}
return $out;
}
echo sprawdz
(); // I tutaj funkcja pokazuje mi prawidlowe info
zegarek84
25.10.2010, 20:58:58
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...
// definija klasy - funkcja nie potrzebna ale... ;)
class jakas {
public static function mozeZTegoSkozysta
() { $out = '';
if (self::$zmienna > 100) {
$out = '$zmienna jest wieksza od 100';
}
return $out;
}
}
// CIAŁO LOGICZNE APLIKACJI - pomijając definicję klasy potrzebną przynajmniej bez funkcji
echo jakas
::mozeZTegoSkozysta(); // no tutaj definicja tej funkcji była potrzebna // jeśli z funkcjo statycznych nie skożystał to przynajmniej z takiej klasy jak z kontenera zmiennych globalnych - mniejsze zło ;p
jakas::$zmienna = 222; // a inna wartość dla przykładu ;)
function sprawdz () {
if (jakas::$zmienna > 100) {
$out = '$zmienna jest wieksza od 100';
}
return $out;
}
dalekie to od opp ale czy nie lepiej ukierunkowywać w tą stronę