Я написал небольшой тестовый сценарий для тестирования смешанного использования статических и нестатических методов. При вызове публичного метода как статического метода он генерирует строгие предупреждения. Это заставило меня думать, что, возможно, вызов статического метода как общедоступного метода приведет к аналогичному предупреждению, но это не так.Можно ли статические методы вызывать как общедоступный метод?
Можно ли вызвать статические методы как нестатический метод? Есть ли последствия для этого?
<?php
class TestS {
static function _testS() {
echo("Hello Static<br>\n");
// Strict warning: Non-static method TestS::_tS() should not be
// called statically in TestS::_tS()
self::_tS();
}
public function _tS() {
echo("tS<br>\n");
}
public function _testP() {
echo("Hello Public<br>\n");
self::_tP();
}
static function _tP() {
echo("tP<br>\n");
}
public function _testSP() {
$this->_tP();
}
}
$test = new TestS();
echo("///////////<br>\n");
$test->_testP();
echo("///////////<br>\n");
TestS::_testS();
echo("///////////<br>\n");
$test->_testSP();
echo("///////////<br>\n");
Пожалуйста, не используйте статические методы. –
Есть ли веские аргументы, чтобы не использовать статические методы, отличные от предпочтений? Мне нравится использовать статические методы/классы, чтобы очистить глобальную область от множества небольших функций полезности. – forsvunnet
Проблема со статическими методами и переменными ** заключается в том, что они глобальны. –