मैं इस परीक्षण स्क्रिप्ट के साथ इंटरफेस और त्रुटियों को लागू:असंगत कार्यों
<?php
interface A
{
function myfunction();
}
class B implements A
{
function myfunction($var = "default")
{
echo $var;
}
}
class C extends B
{
function myfunction()
{
echo "myfunction";
}
}
$c = new C();
$c->myfunction();
$b = new B();
$b->myfunction();
यह ठीक चलाता है और आउटपुट myfunctiondefault
।
अब जब मैं इंटरफ़ेस एक को हटाने और बी अब और एक को लागू नहीं करते हैं, तो जैसे:
<?php
class B
{
function myfunction($var = "default")
{
echo $var;
}
}
class C extends B
{
function myfunction()
{
echo "myfunction";
}
}
$c = new C();
$c->myfunction();
$b = new B();
$b->myfunction();
मैं इस त्रुटि मिलती है:
PHP Strict standards: Declaration of C::myfunction() should be compatible with that of B::myfunction() in /var/www/test/index.php on line 16
Strict standards: Declaration of C::myfunction() should be compatible with that of B::myfunction() in /var/www/test/index.php on line 16
myfunctiondefault
क्यों यह और भी पहली बार में काम किया था ? मैं दोनों परिस्थितियों में त्रुटि की अपेक्षा करता हूं ...
प्रश्न: आप किस PHP संस्करण के साथ काम कर रहे हैं? यहां के रूप में: https://eval.in/149885 'PHP संस्करण 5.4.6' पर है और काम करता है, प्रिंटिंग: ** 'myfunctiondefault' ** – Darren
@ डैरेन यह सिर्फ एक सख्त त्रुटि है, जाहिर है कि यह आपके सर्वर पर अक्षम है, क्योंकि मेरे पास एक ही त्रुटि है –
मैं 5.3.10 का उपयोग करता हूं, लेकिन मेरे कोड के दोनों संस्करण काम करता है। मैं सिर्फ यह जानना चाहता हूं कि मेरा पहला संस्करण सही क्यों माना जाता है, और मेरा दूसरा गलत। – Veda