PHP:在构造函数中调用用户定义的函数?

Pra*_*ant 10 php methods constructor function

userAuth在其构造函数中有一个类我添加了代码以检查用户是否有效,如果会话中没有值,那么我检查cookie(作为"记住我"功能的一部分),如果cookie中有一些值然后我调用一个函数ConfirmUser从数据库中检查它的真实性.在confirmUser函数返回的值的基础上,我在构造函数中返回一个bool(true或fales)值.

我创建了我的课程:

<?php
    class userAuth {

        function userAuth(){
            //code
        }

        function confirmUser($username, $password){
                   //code
        }
    }

    $signin_user = new userAuth();

?>
Run Code Online (Sandbox Code Playgroud)

confirmUser function取两个字符串类型参数并返回一个整数值0,1,2.

我无法confirmUser在构造函数中添加函数代码,因为我在我的应用程序中的更多位置使用此函数.

所以,我想知道如何在PHP中的构造函数内调用用户定义的函数.请帮忙.

谢谢!

Dam*_*S8N 26

$这个 - > nameOfFunction()

但是当他们在课堂上时,他们被称为方法.

  • 我怀疑你认为在构造函数完成之前,没有'$ this'来调用方法; 但是还有.在PHP中,新对象存在,并且'$ this'指向它,只要它进入构造函数. (10认同)

小智 6

但是,在构造函数中使用 $this 时要小心,因为在扩展层次结构中,它可能会导致意外行为:

<?php

class ParentClass {
    public function __construct() {
        $this->action();
    }

    public function action() {
        echo 'parent action' . PHP_EOL;
    }
}

class ChildClass extends ParentClass {
    public function __construct() {
        parent::__construct();
        $this->action();
    }

    public function action() {
        echo 'child action' . PHP_EOL;
    }
}

$child = new ChildClass();
Run Code Online (Sandbox Code Playgroud)

输出:

child action
child action
Run Code Online (Sandbox Code Playgroud)

然而:

class ParentClass {
    public function __construct() {
        self::action();
    }

    public function action() {
        echo 'parent action' . PHP_EOL;
    }
}

class ChildClass extends ParentClass {
    public function __construct() {
        parent::__construct();
        self::action();
    }

    public function action() {
        echo 'child action' . PHP_EOL;
    }
}

$child = new ChildClass();
Run Code Online (Sandbox Code Playgroud)

输出:

parent action
child action
Run Code Online (Sandbox Code Playgroud)