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

时间:2010-12-02 13:41:56

标签: php function methods constructor

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

我创建了我的课程:

<?php
    class userAuth {

        function userAuth(){
            //code
        }

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

    $signin_user = new userAuth();

?>

confirmUser函数接受两个字符串类型参数并返回一个整数值0,1,2。

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

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

谢谢!

4 个答案:

答案 0 :(得分:25)

$这 - &GT; nameOfFunction()

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

答案 1 :(得分:3)

在构造函数中调用函数与从其他地方调用函数没有区别。如果方法在同一个类中声明,则应使用this->function()

顺便说一句,在php5中,建议您将构造函数命名为:
function __construct()

如果没有,请将public关键字放在构造函数定义之前,如public function userAuth()

答案 2 :(得分:1)

你可以用$ this打电话

<?php
    class userAuth {

        function userAuth($username, $password){
             $this->confirmUser($username, $password);
        }

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

    $signin_user = new userAuth($username, $password);

?>

答案 3 :(得分:1)

在构造函数中使用$ 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();

输出:

child action
child action

鉴于:     

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();

输出:

parent action
child action