Вчера цял ден (изключая гостите, което Аби ми направи, та междувременно да и помогна с някои неща в сайта и за конкурса) си блъсках главата как да преработя класовете, които задвижват списъка с блогове (това бе??е причината цял уийкенд да хвърчат гре??ки там). Хванах се да пренаписвам всичко на 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… тъпичко. Може би просто не трябва да правя наследяване на обектите, ами някакъв вид агрегация… току-що ми хрумна !
Тук има едно ре??ение също:
http://spisanie.com/wdm3.tar.gz
Богомил
@Богомил: За съжаление това е ре??ение за нестатичен метод. В статичния метод нямаме $this, а информация от self, както и от __CLASS__, не може да бъде извлечена…
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