Valery's Mlog

Mindlog of a Freak
April 3rd, 2006 by Valery Dachev

Статични недоумици

Вчера цял ден (изключая гостите, което Аби ми направи, та междувременно да и помогна с някои неща в сайта и за конкурса) си блъсках главата как да преработя класовете, които задвижват списъка с блогове (това бе??е причината цял уийкенд да хвърчат гре??ки там). Хванах се да пренаписвам всичко на PHP5. ??мах едни много добри идеи за персистенцията на данни, но… стигнах до тъкмо две задънени улици.

Опитвам се да направя имплементация на Factory Design Pattern, като обектите се създават в статичен метод, чието ре??ение да зависи от класа на наследника, през който е извикан. Това като че ли се оказва невъзможно. Демонстрирам с пример:

class A
{
   public static function show()
   {
      // PROBLEM HERE
      echo 'Should show the corresponding class...';
   }
}
class B extends A
{
}
B::show();

В статичния метод A::show() нямам как да разбера дали методът е извикан чрез A::show() или чрез B::show(). След усърдно ровене из Google установих, че пряк начин това да стане просто няма. ??ма??е едно псевдо-ре??ение с помощта на debug_backtrace(), но ми изглежда тъпичко. С допълнително тормозене на на търсачките установих, че същият проблем съществува и в Java, и в C#… Свидетелски показания сочат, че проблемът не съществува в Delphi… тъпичко. Може би просто не трябва да правя наследяване на обектите, ами някакъв вид агрегация… току-що ми хрумна !

Comments

3 Responses to “Статични недоумици”
  1. bogomil says

    Тук има едно ре??ение също:
    http://spisanie.com/wdm3.tar.gz

    Богомил

  2. @Богомил: За съжаление това е ре??ение за нестатичен метод. В статичния метод нямаме $this, а информация от self, както и от __CLASS__, не може да бъде извлечена…

  3. Helen of Troy says

    Hey! Guess who is it!!
    I made it here!
    And I spent about an hour signing up. I wanted to customize my profile and etc., but no, can’t do. :((
    For some reason my PC does not do well with the page script….
    I will try again later, when I think of ways to go around the obstacles….
    It turns out I really need a website. I am not that well acquainted with the makings of one, so if I want to make it with Dreamwaver, it would take forever, considering my complete, constant lack of time.
    Kisses!
    ttul

Leave a Reply

%d bloggers like this: