मैं अपने phpDoc में "वर्तमान वर्ग का उदाहरण देता हूं" के रूप में एक विधि को कैसे चिह्नित करूं?
निम्नलिखित उदाहरण में मेरा आईडीई (नेटबीन्स) उस सेट को देखेगा कुछ हमेशा foo
ऑब्जेक्ट देता है।
लेकिन वह सच नहीं है अगर मैं हद वस्तु - यह $this
वापस लौटा देंगे, दूसरे उदाहरण में एक bar
वस्तु नहीं एक foo
वस्तु है।
class foo {
protected $_value = null;
/**
* Set something
*
* @param string $value the value
* @return foo
*/
public function setSomething($value) {
$this->_value = $value;
return $this;
}
}
$foo = new foo();
$out = $foo->setSomething();
तो ठीक - setSomething
एक foo
रिटर्न - लेकिन निम्न उदाहरण में, यह एक bar
रिटर्न ..:
class bar extends foo {
public function someOtherMethod(){}
}
$bar = new bar();
$out = $bar->setSomething();
$out->someOtherMethod(); // <-- Here, Netbeans will think $out
// is a foo, so doesn't see this other
// method in $out's code-completion
... यह मेरे लिए के रूप में इस का समाधान करने के लिए महान हो जाएगा, कोड पूर्णता एक बड़े पैमाने पर गति-बढ़ावा है।
किसी को भी एक चतुर चाल, या इससे भी बेहतर, phpDoc के साथ दस्तावेज़ करने का एक उचित तरीका मिला है?
यह नेटबीन की गलती होगी, क्योंकि PHP में कोई ऑब्जेक्टिंग और डाउनकास्टिंग ऑब्जेक्ट नहीं है। – BoltClock
मुझे लगता है कि यह शायद उत्तर के सबसे नज़दीक है (यानी मैं कुछ भयानक समझौता किए बिना ऐसा नहीं कर सकता)। मुझे लगता है कि जावा में मुझे 'setSomething'' के परिणाम को 'बार' पर नतीजा देना होगा इससे पहले कि मैं उस पर 'someOtherMethod' का उपयोग कर सकूं। – ledneb