2013-01-08 15 views
8

Powiedzmy mam typowy wzór fabryki w kodzie PHP:ukończenie i fabryka wzór w Eclipse PDT

abstract class Model 
{ 
    function m() 
    { 
    } 
} 

class model_A 
{ 
    function a() 
    { 
    } 
} 

class model_B 
{ 
    function b() 
    { 
    } 
} 

function modelFactory($name) 
{ 
    $className = 'model_' . $name; 
    $object = new $className(); 
    // ... do some magic stuff ... 
    return $object; 
} 

wiem o @ var i @return tagów PHPDoc, ale jest jakiś magiczny sposób tak po wpisując to:

$x = modelFactory('A'); 

Eclipse będzie znać $ x jest instancją model_A?

mogę określić gdzieś stały wektor ciągów tak:

"modelFactory('A')" => "new model_A()" 
"modelFactory('B')" => "new model_B()" 

dla Eclipse zastąpić w pamięci przed przetworzeniem z zakończenia kodu.

+2

Dlaczego chcesz tego? Fabryka powinna zwrócić "podobne" obiekty, np. implementuje ten sam interfejs lub rozszerza tę samą super klasę. – atomman

+0

Tak, chciałem, aby przykład był super uproszczony. edytowałem go teraz i dodałem super klasę. Wiem, że mogę dodać @return Model powyżej modelFactory, ale jest to możliwe, aby uzyskać zarówno m() i a() jako wskazówki metod dla $ x – fsw

+0

również: duża część mojego projektu zależy od fabrycznego wzoru i brak uzupełniania kodu jest tak denerwujące, będę musiał je refaktoryzować, jeśli nie jest to możliwe. – fsw

Odpowiedz

0

używam Eclipse PDT i od prawie 3+ lat, ale nie mają doskonałą odpowiedź na swoje pytanie

myślę Zend Studio 9 można rozwiązać problemu, dla uzupełniania kodu jest znacznie bardziej lepiej niż PDT.

http://www.zend.com/en/products/studio/downloads

+0

Hmm, mógłbym spróbować Zend. Ale dlaczego myślisz, że sobie poradzi? Polecają także @var dla modelu fabrycznego http://forums.zend.com/viewtopic.php?f=59&t=5454, więc domyślam się, że nie ma na to magicznej metody. – fsw

1

Krótka odpowiedź, to nie jest możliwe w sposób chcesz.

Jak już słusznie zauważył w innym komentarzu należy użyć @var ręcznie do uzyskania uzupełniania kodu dobroć, bo to niemożliwe, redaktor zrozumieć pojęcie wzorców programowania sama

chociaż teoretycznie możliwe, ręcznie reguły tworzenia dla wnioskowania o typ wydaje się tylko imho wstecz (nie mówiąc już o wymaganych zmianach w samej notacji Docblock).