आप वह नहीं कर सकते जो आप पूछ रहे हैं; लेकिन आप "धोखा" दे सकते हैं, इस तथ्य का उपयोग करते हुए कि, PHP में, आपके पास एक फ़ंक्शन हो सकता है जिसका एक वर्ग के समान नाम है; वे नाम संघर्ष नहीं करेंगे।
इसलिए, यदि आपने इस तरह से एक वर्ग घोषित किया है:
class Test {
public function __construct($param) {
$this->_var = $param;
}
public function myMethod() {
return $this->_var * 2;
}
protected $_var;
}
आप तब एक फ़ंक्शन की घोषणा कर सकते हैं जो उस वर्ग का एक उदाहरण देता है - और कक्षा के समान नाम है:
function Test($param) {
return new Test($param);
}
और अब, एक-लाइनर का उपयोग करना संभव हो गया है, जैसे कि आपने पूछा - केवल एक चीज है जिसे आप फ़ंक्शन कह रहे हैं, इस प्रकार:
$a = Test(10)->myMethod();
var_dump($a);
और यह काम करता है: यहाँ, मुझे मिल रहा है:
int 20
आउटपुट के रूप में।
और, बेहतर है, आप अपने फ़ंक्शन पर कुछ phpdoc डाल सकते हैं:
/**
* @return Test
*/
function Test($param) {
return new Test($param);
}
इस तरह, आपके पास अपने आईडीई में संकेत भी होंगे - कम से कम, ग्रहण पीडीटी 2.x के साथ; देखें:
संपादित करें 2010-11-30: जानकारी के लिए, कुछ दिनों पहले एक नया RFC प्रस्तुत किया गया है, जो इस सुविधा को PHP के भविष्य के संस्करणों में से एक में जोड़ने का प्रस्ताव करता है।
देखें: टिप्पणियों के लिए अनुरोध: इंस्टेंस और विधि कॉल / संपत्ति का उपयोग
तो, शायद इन चीजों को करना PHP 5.4 या किसी अन्य भविष्य के संस्करण में संभव होगा:
(new foo())->bar()
(new $foo())->bar
(new $bar->y)->x
(new foo)[0]