Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Dostępność stałych w klasie
abort
post
Post #1





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


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





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


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'))


Ten post edytował CuteOne 10.12.2011, 02:28:49
Go to the top of the page
+Quote Post
abort
post
Post #3





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


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

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 02:19