আপনি যা জিজ্ঞাসা করছেন তা করতে পারবেন না; তবে আপনি "প্রতারণা" করতে পারেন, এই সত্যটি ব্যবহার করে যে পিএইচপি-তে আপনার একটি ফাংশন থাকতে পারে যা ক্লাসের মতো একই নাম রয়েছে; এই নামগুলি বিরোধ করবে না।
সুতরাং, যদি আপনি এটির মতো কোনও শ্রেণি ঘোষণা করেন:
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);
}
এইভাবে, আপনার আইডিইতে ইঙ্গিত থাকবে - কমপক্ষে, গ্রহন পিডিটি ২.x সহ; চিত্রনাট্য দেখুন:
2010-10-30 সম্পাদনা করুন: কেবল তথ্যের জন্য, একটি নতুন আরএফসি জমা দেওয়া হয়েছে, কিছু দিন আগে, পিএইচপি-র ভবিষ্যতের সংস্করণগুলির মধ্যে এই বৈশিষ্ট্যটি যুক্ত করার প্রস্তাব দেয়।
দেখুন: মন্তব্যগুলির জন্য অনুরোধ: তাত্ক্ষণিক এবং পদ্ধতি কল / সম্পত্তি অ্যাক্সেস
সুতরাং, সম্ভবত এই জাতীয় জিনিসগুলি করা PHP 5.4 বা ভবিষ্যতের অন্য সংস্করণে সম্ভব হবে:
(new foo())->bar()
(new $foo())->bar
(new $bar->y)->x
(new foo)[0]