Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dostępność stałych w klasie
Forum PHP.pl > Forum > Przedszkole
abort
Ucząc się obiektówki, rzeczywistość postawiła mnie pod ścianą - zostałem zmuszony do zastosowania logowania. Ponieważ obiektówki się uczę, więc stwierdziłem, że napiszę klasę loggera samodzielnie. Na razie w wersji statycznej. I tu napotkałem na problem. Stałe zdefiniowane w obiekcie nie mogą być w żaden sposób wykorzystane w definicji metody tej klasy... albo po prostu ja nie ogarniam tej kuwety smile.gif
  1. <?php
  2. class Logger {
  3. const LOG_HTML = 2;
  4. const LOG_ADD_EOL = 4;
  5. const LOG_PID = 8;
  6. const LOG_TIME = 16;
  7. const LOG_URI = 32;
  8. const LOG_BACKTRACE = 64;
  9.  
  10. [...]
  11.  
  12. public static function logOpen ($logfile,
  13. // $mode=self::LOG_URI
  14. // + self::LOG_TIME <== tu mi wywala błąd...
  15. // + self::LOG_ADD_EOL
  16. // + self::LOG_BACKTRACE) {
  17. $mode=84) { // rozwiązanie tymczasowe - to działa


Krótkie pytanie: DLACZEGO?
Próbowałem (chyba) każdego sposobu: łączenia przez "|", używania nazw bez "self::", i innych podobnych wygibasów. Dodam, że wewnątrz metod odwołania postaci "self::CONSTANT" są jak najbardziej prawidłowe i działają dokładnie tak, jak tego oczekuję.

PHP 5.3.2/Win32

P.S.
Tak, wiem: singleton i inne wzorce. Ale chodzi o coś innego - powtórzę pytanie: "dlaczego to nie działa, i co zrobić, by zadziałało".
CuteOne
prosty przykład

  1.  
  2. function bla($a=1, $b='aa', $c='aaa'||'bbb'||'ccc')
  3.  


$c musi przyjąć jakąś konkretną wartość a nie A lub B lub C.

$c może przyjąć wartość aaabbbccc za pomocą połączenia poprzez . lub jako tablica
  1. function bla($a=1, $b='aa', $c='aaa'.'bbb'.'ccc')
  2. function bla($a=1, $b='aa', $c=array('aaa','bbb','ccc'))
abort
No chyba niezupełnie. Obaj myślimy o logicznym "or", ale w dwóch "rodzajach", że się tak wyrażę.

Ty piszesz o http://www.php.net/manual/en/language.operators.logical.php. Ja myślałem o użyciu http://www.php.net/manual/en/language.operators.bitwise.php (takim jak w stałych E_ w php - nie zastanowiły Cię wartości stałych zdefiniowanych wewnątrz klasy?)

Zresztą, jeśli nawet - to sumowanie (w postaci "+") w odniesieniu do stałych liczbowych (zdefiniowanych w klasie) imho powinno działać. A też nie działa. A to już jest bardziej zastanawiające, przynajmniej dla mnie.
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.