我有一个类,其中包含多个与用户数据相关的查询到数据库中,要访问这些方法需要验证用户是否已登录,我使用php初始化器 "__construct()" 方法来实现,如果用户已登录,则在那里指定。
<?php
class User()
{
public function __construct() {
if ( !isset($_SESSION['user']) ) {
$data = array(
'response' => false,
'message' => 'You must login to access this page'.
);
echo json_encode($data);
}
}
public function index() {
// The user can access if you are logged
}
public function edit_profile() {
// The user can not access if you have not logged
}
public function save_profile_data() {
// The user can not access if you have not logged
}
}
?>
我的问题:
- 使用__construct()是一个好的优化选择吗?会消耗资源吗?
- __construct()的使用是安全的,并且可以防止用户访问其他未指定是否有编码会话变量的方法。
例如,如果用户调用edit_profile()方法,而此方法没有代码来检查会话,但我已在__construct()中指定,则用户可以访问此方法吗?
private
属性,用于设置执行方法权限的标志。然后在每个方法内部,您都可以检查此标志的状态,以确定是否允许执行。 - MarkSkayff