Junior — Middle
Агар дар зернаи зерин, ки дар он муайян нашудааст, бо истифода аз self:: ба метод муроҷиат кунед, чӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар PHP калидвожа self:: ҳамеша ба класи, ки дар он навишта шудааст, ишора мекунад, на ба класи фарзандаш. Агар дар класи фарзандаш як методро тавассути self:: даъват кунед, ки дар худи класи фарзандаш муайян нашудааст, балки дар класи падар муайян шудааст, PHP кӯшиш мекунад, ки онро дар класи фарзандаш пайдо кунад ва нахоҳад ёфт, ки ин ба хато оварда мерасонад.
Масалан:
class ParentClass {
public static function foo() {
echo "Parent foo";
}
}
class ChildClass extends ParentClass {
public static function bar() {
self::foo(); // кӯшиши даъвати foo() тавассути self:: дар ChildClass
}
}
ChildClass::bar(); // Хато: Call to undefined method ChildClass::foo()
Барои даъвати усули класи падар, бояд истифода баред parent::foo() ё static::foo(), агар лозим бошад, пайванди статикӣ дарозтар.