Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] leniwe obliczanie wyrażeń logicznych
ocochodzi
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 2
Dołączył: 27.02.2007

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


Czy wyrażenia logiczne w PHP są wykonywane leniwie? Sprawdziłem u siebie. Skrypt:

  1. <?php
  2.  
  3. function T()
  4. {
  5. echo 'T';
  6. return TRUE;
  7. }
  8.  
  9.  
  10. function F()
  11. {
  12. echo 'F';
  13. return FALSE;
  14. }
  15.  
  16. echo 'IF(T i F): ';
  17. if( F() && T())
  18. echo ' warunek spelniony<br>';
  19. else 
  20. echo ' wrunek niespelniony<br>';
  21.  
  22. echo '<br>';
  23.  
  24. echo 'IF(T lub F): ';
  25. if( T() || G())
  26. echo ' warunek spelniony<br>';
  27.  
  28. ?>


da w wyniku:

IF(T i F): F wrunek niespelniony

IF(T lub F): T warunek spelniony


Czyli u mnie na localhoscie odpowiedz brzmi tak. Moje pytanie brzmi.

1) Czy to rzecz do zmienienia w konfiguracji serwera?
2) Czy to się zmieniało z wersji na wersję? (a w PHP zmienialy sie fundamentalne rzeczy, np. sposob przypisywania obiektów...)
3) Czy w manualu jasno piszą jak wykonują się wyrażenia logiczne w PHP?

Pytam, bo dzięki leniwym wyrażeniom można pisać zwięźlej (oszczedzać na IFach) i optymalizować (funkcja dłuzej wykonujaca się wywoływana w odpowiednim miejscu), ale chiałbym wiedzieć czy kod będzie pewny, bo np sytuacja gdy:

A() && B(),
gdzie nieprawdziwość A pociąga crash systemu przy wywołaniu B przy nie leniwym wykonywaniu kodu bedzie katastrofą.
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




php robi "leniwie". Nic mi nie wiadomo by mozna bylo to zmienic.

ps: ale przy wymyslaniu nicka to naprawde mogles sie wysilic...
Go to the top of the page
+Quote Post
ocochodzi
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 2
Dołączył: 27.02.2007

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


Liczyłem na połajankę w stylu: "przecież czarno na białym napisali w tutorialu". (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Przejrzę jeszcze manual. Przy pobieznym przegladaniu nic nie znalazłem. Myslalem sobie, ze skoro przy przejsciu z PHP4 na 5 tak mocno zmieniono znaczenie strego kodu, to trzeba uważać. Choć z drugiej strony trudno mi sobie wyobrazić korzyści ze zmiany w przypadku obliczania wyrażeń...

Cytat(nospor)
ps: ale przy wymyslaniu nicka to naprawde mogles sie wysilic...


Ale skąd wiesz, ze się nie wysiliłem? Rozwazylem hax0rskie, imiona, pretensjonalne nicki zbudowane z imiona (np. Zbyszek83) pretensjoanlne typu php_warrior, sentymentalne (bohater ulubionej powieści), dowcipne (a' DELETE FROM USERS...), prowokacyjne (np. OjciecDyrektor), ozdobne (_-_-_-_), nic nie znaczące, np. nozpol itp. Przejście na programowanie webowe było dla mnie solidną zmianą (kilka nowych jezykow, inne wymagania, nowe protokoly) i pytanie "o co w tym wszytskim chodzi?" pojawiało się dość często, więc nawet jakas legende mam do tego nicku. Za stary jestem by się jarać "oryginalnymi" nickami.

Ten post edytował ocochodzi 25.03.2008, 20:57:08
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Nie tylko w php sie takie optymalizacje robi.

A przyklady masz w kazdym glupim tutorialu (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) (ale nie wspominaja o tym (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ):
  1. <?php
  2. mysql_connect( ... ) OR die( mysql_error);
  3. ?>

i gdyby nie bylo leniwego wyznaczania, to bys za kazdym razem mial die() wykonywane.

No a w manualu nei znalazlem, google tez nic mi nie pomoglo (pewnie trzeba by dluzej poszukac)

A co do nicka: hehe
Go to the top of the page
+Quote Post
ocochodzi
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 2
Dołączył: 27.02.2007

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


Cytat(dr_bonzo @ 25.03.2008, 21:16:22 ) *
Nie tylko w php sie takie optymalizacje robi.


Dlatego pytałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Tylko, ze o ile pamietam to np. w jakims starym Pascalu ustawialo się opcje kompilacji w tym celu. Generalnie jak już się coś skompiluje i działa w okreslony sposób, to raczej sie nie zmieni. W PHP natomiast to leży sobie kod na serwerze i cholera wie co go bedzie za rok międlić. No cóż...jesli cała społeczność ufa utartym obyczajom, to mi to wystarcza.

Dzięki za odpowiedzi i przepraszam za zjedzenie [PHP] w temacie watku. Nie mysleliscie na podzieleniu przedszkola na działy? Aż się prosi.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 00:08