के लिए यह $, self ::, parent :: का उपयोग करके मैं जानना चाहूंगा कि यह php कक्षाओं में काम करते समय स्वयं :: विधि() और parent :: method() का उपयोग करने के लिए स्वीकार्य/पसंदीदा है या नहीं।कोड पठनीयता
आप इस-> विधि() लेकिन $ $-> का उपयोग कर सकते हैं-> क्लास वेरिएबल, पैरेंट क्लास वैरिएबल या पैरेंट क्लास से एक विधि का भी उल्लेख कर सकते हैं। स्वयं में कोई अस्पष्टता नहीं है ::
क्या स्वयं :: वंचित और/या इस शैली का उपयोग करने के लिए कोई चेतावनी या विपक्ष है?
मैं समझता हूं कि स्वयं :: और अभिभावक :: कक्षा के एक स्थिर उदाहरण को संदर्भित करते हैं, लेकिन कोहाना में, जब तक कि आप विशेष रूप से एक विधि को स्थैतिक रूप से परिभाषित नहीं करते हैं, तो कोई अंतर नहीं लगता है।
धन्यवाद।
जोड़ा एक उदाहरण: मान लिया जाये कि कई वेबसाइटों से इस आवेदन भंडार मंचों ...
class Forum_Controller extends Controller {
function __construct()
{
parent::__construct();
}
function index()
{
echo self::categories();
}
/*
* get a list of categories from a specific site.
*/
private function categories()
{
$db = new Database;
$categories = $db->query("
SELECT * FROM
forum_categories
WHERE fk_site = '$this->site_id'
");
$view = new View('categories_view');
$view->categories = $categories;
return $view;
}
}
इस उदाहरण त्रुटि रिपोर्टिंग करने के लिए सेट के साथ kohana में काम करता है: error_reporting (E_ALL & ~ E_STRICT);
$ यह-> site_id को मुख्य नियंत्रक_Core क्लास (कोहाना में एक लाइब्रेरी) में परिभाषित किया गया है।
जहां तक मुझे पता है, $ यह उपलब्ध नहीं होना चाहिए क्योंकि मैं स्वयं को :: श्रेणियों() को एक स्थिर तरीके से बुला रहा हूं, लेकिन यह केवल तभी होता है जब मैं श्रेणियों() को स्थैतिक मानता हूं कि यह एक त्रुटि फेंकता है ।
लेकिन जैसा कि मैंने कहा था कि मैं स्वयं को स्वयं :: का उपयोग करना पसंद करता हूं क्योंकि एक पठनीयता परिप्रेक्ष्य से, मुझे पता है कि यह फ़ंक्शन वास्तव में कहां होना चाहिए, इसके बजाय अस्पष्टता का कारण बनने के बजाय यह कार्य कहां होना चाहिए।
कारण इस कोड काम करता है, क्योंकि आप कभी नहीं स्थिर बुलाया श्रेणियों विधि में वस्तु का इस उदाहरण एक $ की बात कर रहे के लिए स्वयं का उपयोग ::। – null