के लिए __destruct दृश्यता __destruct()
फ़ंक्शन के लिए "दृश्यता" सार्वजनिक हो या कुछ और हो? मैं अपने समूह के लिए एक मानक दस्तावेज़ लिखने की कोशिश कर रहा हूं और यह सवाल उठ गया।PHP
Q
PHP
19
A
उत्तर
23
मार्क Biek के जवाब के अलावा:
__destruct() फ़ंक्शन घोषित किया जाना चाहिए जनता। अन्यथा, समारोह स्क्रिप्ट शटडाउन होने पर निष्पादित नहीं किया जाएगा:
Warning: Call to protected MyChild1::__destruct() from context '' during shutdown ignored in Unknown on line 0
Warning: Call to private MyChild2::__destruct() from context '' during shutdown ignored in Unknown on line 0
यह हानिकारक है, बल्कि अशुद्ध नहीं हो सकता।
लेकिन इस बारे में सबसे महत्वपूर्ण बात यह: नाशक निजी घोषित या सुरक्षित है, तो क्रम पल कचरा कलेक्टर मुक्त वस्तुओं की कोशिश करता है में एक गंभीर त्रुटि फेंक देगा:
<?php
class MyParent
{
private function __destruct()
{
echo 'Parent::__destruct';
}
}
class MyChild extends MyParent
{
private function __destruct()
{
echo 'Child::__destruct';
parent::__destruct();
}
}
$myChild = new MyChild();
$myChild = null;
$myChild = new MyChild();
?>
आउटपुट
Fatal error: Call to private MyChild::__destruct() from context '' in D:\www\scratchbook\destruct.php on line 20
(उत्कृष्ट उदाहरण के लिए मार्क बीएके को धन्यवाद!)
8
मुझे लगता है कि इस मामले में सार्वजनिक होने की आवश्यकता होगी जहां उप-वर्ग को __destruct अभिभावक वर्ग की विधि को स्पष्ट रूप से कॉल करने की आवश्यकता है।
कुछ इस तरह एक त्रुटि फेंक होगा:
<?php
class MyParent
{
private function __destruct()
{
echo 'Parent::__destruct';
}
}
class MyChild extends MyParent
{
function __destruct()
{
echo 'Child::__destruct';
parent::__destruct();
}
}
$myChild = new MyChild();
?>
संबंधित मुद्दे
यह मेरे उत्तर से एक अच्छा मांसपेशियों है। आपके लिए +1 :) –