Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> leniwe definicje
acidm
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

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


Czy da się jakoś zaimplementować leniwe definiowanie w php?Mianowicie chciałbym aby metoda statyczna klasy w zależności od pewnych ustawień miała inną definicję ale ,sprawdzenie tych ustawień i redeklaracja (a raczej mechanizm ją zastępujący)była wykonywana tylko jeden raz.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
acidm
post
Post #2





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

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


W jaki sposób , możesz zaprezentować coś?

Myślałem żeby osiągnąć cel w ten sposób:

  1. function Mbucfirst($str)
  2. {
  3. static $a = '';
  4.  
  5. if (empty($a))
  6. {
  7. if (extension_loaded('mbstring'))
  8. {
  9.  
  10. $a = function($str)
  11. {
  12. return mb_strtoupper(mb_substr($str, 0, 1, 'UTF-8'), 'UTF-8') . mb_strtolower(mb_substr($str, 1, null, 'UTF-8'), 'UTF-8');
  13. };
  14. }
  15. else
  16. {
  17. $a = ucfirst($str);
  18. }
  19. }
  20.  
  21.  
  22. return $a($str);
  23. }
  24.  


i to nawet działa ,ale gdy przepisałem na statyczną funkcje obiektu to mam już problemy:

  1. class Mb
  2. {
  3.  
  4. public static$a;
  5.  
  6. public static function ucfirst($str)
  7. {
  8. if (empty(self::$a))
  9. {
  10. if (extension_loaded('mbstring'))
  11. {
  12.  
  13. self::$a = function($str)
  14. {
  15. return mb_strtoupper(mb_substr($str, 0, 1, 'UTF-8'), 'UTF-8') . mb_strtolower(mb_substr($str, 1, null, 'UTF-8'), 'UTF-8');
  16. };
  17. }
  18. else
  19. {
  20. self::$a = ucfirst($str);
  21. }
  22. }
  23.  
  24.  
  25. return self::$a($str);
  26. }
  27.  
  28. }
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 08:23