PHP - OOP - 为什么我的函数被调用两次?

Kev*_*gst 0 php oop

我遇到一个问题,每次提交表单时我的函数都被调用两次

我的表单文件调用函数:

<?php
require "classes/loginClass.php";
$login = new login;
$login->login();
?>

<form action="" method="POST">
    <label for="username">username: </label>
    <input type="text" id="username" name="username" required><br/>
    <label for="password2">password: </label>
    <input type="password" id="password2" name="password2" required><br/>
    <input type="submit" name="submit" value="login">
</form>
Run Code Online (Sandbox Code Playgroud)

我的班级和职能:

class login {

    public function login() {
        if(isset($_POST['submit'])){
            echo "submit";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以每次按下提交按钮时,"提交"都会回复两次.这意味着我的函数被调用两次.我不明白为什么.

Mad*_*iha 15

与该类相同的方法被视为(旧样式)构造函数,并在每次创建对象时调用.

因此,在创建对象时调用一次,在显式调用对象时调用另一次.

请注意,今天,它被认为是一种更好的实践,__construct()而不是ClassName()主要用于帮助继承.


更多阅读材料:


Abh*_*rty 6

您的班级名称是登录名.你没有__construct(),并且你有一个叫做的函数login().因此,当您实例化该类时,login()由于您没有定义__construct(),因此首先调用该类,与类相同的方法名称将成为构造函数.然后你login()再次调用该函数.因此它被召唤两次.


Mau*_*Fão 5

创建类时,应指定构造函数.

如果您没有指定构造函数,则由Magic Methods调用.

在您的情况下,您创建一个没有构造函数的类,使用具有相同名称的函数.课程登录 - >方法登录.像登录方法这样的PHP行为是你的构造函数......

因此,当您调用$ login = new Login()时,您正在调用构造函数,即Login Method.

当你调用Login Method,$ login-> login()时,你会调用它两次.

你明白了吗?