PHP: вызов пользовательской функции внутри конструктора? - PullRequest
9 голосов
/ 02 декабря 2010

У меня есть класс userAuth внутри его конструктора. Я добавил код, чтобы проверить, является ли пользователь действительным или нет, если в сеансе нет значения, тогда я проверяю куки (как часть функции «Запомнить меня»), еслив куки есть какое-то значение, тогда я вызываю функцию ConfirmUser, чтобы проверить ее подлинность из базы данных.На основе значения, возвращенного функцией verifyUser, я возвращаю значение bool (true или fales) в конструкторе.

Я создал свой класс как:

<?php
    class userAuth {

        function userAuth(){
            //code
        }

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

    $signin_user = new userAuth();

?>

confirmUser функциявзять два строковых параметра типа и вернуть return целое значение 0, 1, 2.

Я не могу добавить код функции confirmUser внутри конструктора, так как я использую эту функцию в некоторых других местах моегоapplication.

Итак, я хочу знать, как вызывать пользовательскую функцию внутри конструктора в PHP.Пожалуйста, помогите.

Спасибо!

Ответы [ 4 ]

25 голосов
/ 02 декабря 2010

$ this-> nameOfFunction ()

Но когда они находятся в классе, они называются методами.

3 голосов
/ 02 декабря 2010

Нет никакой разницы для вызова функции внутри конструктора, чем для вызова откуда-то еще. Если метод объявлен в том же классе, вы должны использовать this->function()

Кстати, в php5 вам предлагают назвать ваш конструктор так:
function __construct()

Если нет, тогда поставьте ключевое слово public перед определением конструктора, как это public function userAuth()

2 голосов
/ 26 июня 2017

Будьте осторожны с использованием $ 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
1 голос
/ 02 декабря 2010

Вы можете позвонить с $ this

<?php
    class userAuth {

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

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

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

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...