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

发布于 2024-10-05 19:57:57 字数 663 浏览 1 评论 0原文

我在其构造函数中有一个类 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 的构造函数中调用用户定义的函数。请帮忙。

谢谢!

I have a class userAuth inside its constructor I have added code to check the user is valid or not, if there is no value in session then I check cookies (as a part of "Remember Me" feature), if there is some value inside cookies then I call a function ConfirmUser to check its authenticity from database. On the basis of value returned by the confirmUser function I am returning a bool (true or fales) value in constructor.

I have created my class as:

<?php
    class userAuth {

        function userAuth(){
            //code
        }

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

    $signin_user = new userAuth();

?>

confirmUser function take two string type parameters and return return a integer value of 0, 1, 2.

I can't add code of confirmUser function inside the constructor as I am using this function at some more places in my application.

So, I want to know how to call a user-defined function inside constructor in PHP. Please help.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

只是我以为 2024-10-12 19:57:57

$this->nameOfFunction()

但是当它们在一个类中时,它们被称为方法。

$this->nameOfFunction()

But when they are in a class, they are called Methods.

超可爱的懒熊 2024-10-12 19:57:57

不过,在构造函数中使用 $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

Be careful with using $this in a constructor, though, because in an extension hierarchy, it can cause unexpected behaviour:

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

Output:

child action
child action

Whereas:

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

Output:

parent action
child action
笑,眼淚并存 2024-10-12 19:57:57

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

顺便说一下,在 php5 中,建议您这样命名构造函数:
function __construct()

如果没有,则在构造函数定义之前放置 public 关键字,如下所示 public function userAuth()

There is no difference between calling a function inside a constructor and calling from somewhere else. If the method is declared in the same class you should use $this->function()

By the way, in php5 you are suggested to name your constructor like this:
function __construct()

If not then put public keyword before your constructor definition like this public function userAuth()

满地尘埃落定 2024-10-12 19:57:57

你可以用 $this 打电话

<?php
    class userAuth {

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

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

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

?>

you can call with $this

<?php
    class userAuth {

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

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

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

?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文