Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pytanie o define or define
KotWButach
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




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ą.
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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
Go to the top of the page
+Quote Post
spokoloko123
post
Post #4





Grupa: Zarejestrowani
Postów: 114
Pomógł: 12
Dołączył: 15.02.2012

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


to trochę inny sposób na:
  1. if(!defined('example'))
  2. {
  3. define('example', 'foobar');
  4. }


Ten post edytował spokoloko123 6.09.2012, 19:02:59
Go to the top of the page
+Quote Post
KotWButach
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Dziękuje za wyczerpujące odpowiedzi (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
spokoloko123
post
Post #6





Grupa: Zarejestrowani
Postów: 114
Pomógł: 12
Dołączył: 15.02.2012

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


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.
Go to the top of the page
+Quote Post
KotWButach
post
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


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.
Go to the top of the page
+Quote Post
Pawel_W
post
Post #8





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


  1. !isset($_POST['example']) OR ($example = $_POST['example'])
Go to the top of the page
+Quote Post
drPayton
post
Post #9





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


Oraz popularne w tutkach dla początkujących

(IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
redeemer
post
Post #10





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


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ę.

Go to the top of the page
+Quote Post
pamil
post
Post #11





Grupa: Zarejestrowani
Postów: 97
Pomógł: 15
Dołączył: 12.08.2012
Skąd: Zabrze

Ostrzeżenie: (10%)
X----


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