Итак, у меня есть эта проблема, когда я могу вызвать метод объекта статически и наоборот. Это должно произойти или что я делаю неправильно на случай?PHP статические и объектные вызовы
PHP Версия: 5.6.12 XAMPP Версия: 3.2.1
function endl()
{
echo "<br>";
}
class Base
{
public function objectFunc($msg)
{
echo "You called a non-static function from " . $msg;
endl();
}
public static function staticFunc($msg)
{
echo "You called a static function from " . $msg;
endl();
}
}
Base::objectFunc("a static call");
Base::staticFunc("a static call");
$base = new Base;
$base->objectFunc("a non-static call");
$base->staticFunc("a non-static call");
Here are the results from running this:
You called a non-static function from a static call
You called a static function from a static call
You called a non-static function from a non-static call
You called a static function from a non-static call
Из [docs] (http://php.net/manual/en/language.oop5.static.php): 'Вызов нестатических методов статически генерирует предупреждение уровня E_STRICT.' Я бы поднял вашу отчетность об ошибках и посмотрите, не заметили ли какие-либо предупреждения. Кроме того, вы _will_ запускаете ошибку, если пытаетесь ссылаться на '$ this' при вызове статически. –