Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pytanie o define or define
Forum PHP.pl > Forum > PHP
KotWButach
Witam
Od pewnego czasu zastanawiam się dlaczego niektórzy dają taki oto zapis.

  1. defined('example') or define('example', '10');


zamiast po prostu pisać

  1. define('example', '10')


czym to jest podyktowane, jakie jest tego uzasadnienie oraz czemu to pomaga?
Spawnm
Nie spotkałem się jeszcze z czymś takim w php.
Ale może służyć temu że plik w którym to masz jest gdzieś includowany i jeśli w głównym programie nie było define, zostanie ono stworzone z wartością domyślną.
phpion
Jest to nic innego jak zabezpieczenie przed redeklaracją wartości stałej. Jeśli wartość nie jest ustalona to jest ustalana. Jeśli zostawiłbyś samo define() to w przypadku istnienia już takiej stałej otrzymałbyś ostrzeżenie:
Kod
Notice: Constant example already defined
spokoloko123
to trochę inny sposób na:
  1. if(!defined('example'))
  2. {
  3. define('example', 'foobar');
  4. }
KotWButach
Dziękuje za wyczerpujące odpowiedzi smile.gif Pomogły zrozumieć mi ten prosty acz jeszcze przed 2 minutami niezrozumiały mechanizm. Czyli jednym słowem warto go stosować kiedy mamy powyższe sytuacje.
spokoloko123
Sam mechanizm jest bardzo uniwersalny i może dotyczyć nie tylko tego przypadku. Zasada ogólna:
  1. <?php
  2. function foo()
  3. {
  4. echo "foo";
  5. return true;
  6. }
  7. function bar()
  8. {
  9. echo "bar";
  10. }
  11.  
  12. foo() or bar();
  13. ?>


funkcja foo() spełnia waruek (zwraca true) więc program wyświetli tylko foo, bar() wgl. nie zostanie wykonany.
KotWButach
spokoloko123 a gdzie czegoś takiego można użyć? Nie zdarzyło mi się by działać na funkcjach porównując ich wartości zwracane w taki sposób. Gdzie takie coś można by zastosować na szybko nie mogę znaleźć przykładu a jest to szybki i pewny sposób.
Pawel_W
  1. !isset($_POST['example']) OR ($example = $_POST['example'])
drPayton
Oraz popularne w tutkach dla początkujących

wink.gif
redeemer
Jest to zwykły operator logiczny, ten sam co używamy w instrukcjach warunkowych. Nie ma tu żadnej magii i ta operacja też zwraca wartość bool. Można również zastosować koniunkcję np:
  1. a() && b()
W tym wypadku funkcja b() wykona się tylko wtedy kiedy funkcja a() zwróci prawdę.

pamil
I pomoc z manuala: http://www.php.net/manual/en/language.operators.logical.php
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.