Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl


Morkai
Napisane: 13.12.2008, 14:09:40





Grupa: Zarejestrowani
Postów: 24
Dołączył: 25.08.2005

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

Da się to uzyskać poprzez odpowiednie obrobienie wyniku debug_backtrace()" title="Zobacz w manualu PHP" target="_manual, ale sensu podobnie jak mike nie widzę winksmiley.jpg

  1. <?php
  2.  
  3. function check_caller()
  4. {
  5.    $backtrace = debug_backtrace();
  6.    
  7.    if (!isset($backtrace[2]) || ($backtrace[1]['class'] === (isset($backtrace[2]['class']) ? $backtrace[2]['class'] : null)))
  8.    {
  9.        throw new BadMethodCallException();
  10.    }
  11. }
  12.  
  13. ?>


Użycie
  1. <?php
  2.  
  3. class Foo
  4. {
  5.    function doSmth()
  6.    {
  7.        $this->doFoo();
  8.    }
  9.    
  10.    function doFoo()
  11.    {
  12.        check_caller();
  13.        
  14.        echo __FUNCTION__, "\n";
  15.    }
  16. }
  17.  
  18. class Bar
  19. {
  20.    private $foo;
  21.    
  22.    function __construct(Foo $foo)
  23.    {
  24.        $this->foo = $foo;
  25.    }
  26.    
  27.    function doBar()
  28.    {
  29.        $this->foo->doFoo();
  30.    }
  31. }
  32.  
  33. function do_baz(Foo $foo)
  34. {
  35.    $foo->doFoo();
  36. }
  37.  
  38. $foo = new Foo();
  39. $bar = new Bar($foo);
  40.  
  41. echo '<pre>';
  42. try { $foo->doFoo(); } catch (BadMethodCallException $x) { echo $x, "\n"; }
  43. try { $foo->doSmth(); } catch (BadMethodCallException $x) { echo $x, "\n"; }
  44. try { $bar->doBar(); } catch (BadMethodCallException $x) { echo $x, "\n"; }
  45. try { do_baz($foo); } catch (BadMethodCallException $x) { echo $x, "\n"; }
  46. echo '</pre>';
  47.  
  48. ?>
  Forum: Object-oriented programming · Podgląd postu: #547281 · Odpowiedzi: 5 · Wyświetleń: 1 390

Morkai
Napisane: 12.11.2008, 17:40:45





Grupa: Zarejestrowani
Postów: 24
Dołączył: 25.08.2005

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

Apache 2.2 i PHP 5.3a2 na XP:
Kod
No
Not extsis
Number 1
Number 2

Apache 1.3.37 i PHP 5.2.2 na jakikolwiek-linux-jest-na lap.pl:
Kod
No
Not extsis
Number 1
Number 2


Musisz mieć zbugowaną wersję PHP winksmiley.jpg
  Forum: Object-oriented programming · Podgląd postu: #535740 · Odpowiedzi: 6 · Wyświetleń: 1 631

Morkai
Napisane: 8.11.2008, 21:31:27





Grupa: Zarejestrowani
Postów: 24
Dołączył: 25.08.2005

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

Usuń wywołanie closeCursor() albo wstaw po fetch().
  Forum: Przedszkole · Podgląd postu: #534414 · Odpowiedzi: 2 · Wyświetleń: 604


New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 29.05.2024 - 05:05