PHP5 ООП въпрос

5 отговора 350 прегледа
#1

PHP5 ООП въпрос

Въпросът ми е следния... Имам няколко класа (опростил съм доста нещата, за прегледност) :

class PHPASPSMSAdapter {
}

class SMSProvider {
public static function getProvider() {
return 'PHPASPSMSAdapter';
}
}

$provider = SMSProvider::getProvider();
$sms = new SMS(new $provider);
$sms->sendSMS();

това работи коректно...

въпросът е как (и изобщо възможно ли е) да се избегне тази междинна променлива $provider...

__________________________________
Пътят към ада е осеян с добри намерения
Отговор
в отговор на ..:: StanProg ::.. #2

Re: PHP5 ООП въпрос

мисля, че спокойно можеш да го направиш
...
само че си направи хубаво Factory pattern-а (да ти връща обект, а не стринг с име на обекта, който да създадеш), ако това се опитваш да направиш

Отговор
в отговор на AcidMemory #3

Re: PHP5 ООП въпрос

мерси за препоръката...

въпроса е принципен, не става дума за съществуващо приложение, просто проектирайки приложението и знаейки, че може да се създаде обект от клас указан чрез променлива реших да пробвам да го създам като използвам стринга върнат от статичния метод... директно, без помощната променлива $provider... но не успях... и все още ме съм сигурен дали може.

а за patterns... по-горе съм добавил префикс Adaptor, но в реализацията не се придържам към този pattern... просто в случая не мисля, че е удачен (поне не точно този pattern)...
в момента го препроектирам, щото се появиха нови неща (да го кажем refactoring)... така че, още не съм решил как точно ще реализирам обектния модел

__________________________________
Пътят към ада е осеян с добри намерения
Отговор
в отговор на ..:: StanProg ::.. #4

Re: PHP5 ООП въпрос

Не може. Като гледам граматиката в zend_language_parser.y поне на пръв поглед изглежда, че не може да комбинираш new с по-сложни изрази.

Отговор
в отговор на Penguin #5

По-точно

Само "string" и $variable приема, като променливата може и да е мембър на обект или индиректна $$variable. Но на практика това е всичко което може да подадеш.

Отговор
в отговор на Penguin #6

Re: По-точно

благодаря за информацията... точно това ме интересуваше

__________________________________
Пътят към ада е осеян с добри намерения
Отговор