Почему показано 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
Я смущен, что причина возникновения ошибки. Пожалуйста, помогите мне понять.
Ответы
Ответ 1
Если у вас есть имя метода, которое совпадает с именем класса, оно считается конструктором. Конструкторы не могут быть статическими. Вы должны либо переименовать этот класс или метод, либо сделать метод не статическим, и создать экземпляр класса, если вы хотите его использовать.
Ответ 2
В PHP 5 конструкторы называются __construct
. В PHP 4 это было имя класса, например. function pay
для class pay
. PHP 5 обратно совместим с PHP 4, так что все еще работает. Конструкторы не могут быть static
.
Ответ 3
Конструктор вызывается при создании объекта и, следовательно, не может быть статическим. Именование функции, аналогичной классу, php считает, что вы хотите, чтобы это был конструктор
Ответ 4
Метод, имя которого совпадает с именем указанного класса, не является обычным методом, а конструктором, используемым для создания новых экземпляров класса. Конструкторам не разрешено быть статическими, поскольку все они должны действовать только на новый экземпляр класса.