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