Подтвердить что ты не робот

Почему показано Fatal Error на статической функции

У меня есть крошечный класс ввода платежной записи в базу данных. ниже дано:

<?php

class pay{
        public static function pay($user, $income, $type, $refid='--'){
        mysql_query("INSERT INTO earn VALUES (NULL, '$user', '$income', '$refid', '$type', ".time().")");   
        }
    }

?>

Но браузер дает следующую фатальную ошибку.

Неустранимая ошибка: конструктор pay:: pay() не может быть статичным в F:\xampp\htdocs\new\sts\class.php в строке 41

Я смущен, что причина возникновения ошибки. Пожалуйста, помогите мне понять.

4b9b3361

Ответ 1

Если у вас есть имя метода, которое совпадает с именем класса, оно считается конструктором. Конструкторы не могут быть статическими. Вы должны либо переименовать этот класс или метод, либо сделать метод не статическим, и создать экземпляр класса, если вы хотите его использовать.

Ответ 2

В PHP 5 конструкторы называются __construct. В PHP 4 это было имя класса, например. function pay для class pay. PHP 5 обратно совместим с PHP 4, так что все еще работает. Конструкторы не могут быть static.

Ответ 3

Конструктор вызывается при создании объекта и, следовательно, не может быть статическим. Именование функции, аналогичной классу, php считает, что вы хотите, чтобы это был конструктор

Ответ 4

Метод, имя которого совпадает с именем указанного класса, не является обычным методом, а конструктором, используемым для создания новых экземпляров класса. Конструкторам не разрешено быть статическими, поскольку все они должны действовать только на новый экземпляр класса.