php - 如何将 isAdmin() 更改为 $session->isAdmin

标签 php mysql function session variables

所以我查看了一些 php 脚本,并且看到了 $session->isAdmin(),我喜欢它在代码中的显示方式...

我意识到这是在调用一个函数;但是,我无法让它工作。我可以调用一个函数,但由于某种原因无法弄清楚如何将其标记为 $session->isAdmin() 而不是仅调用 isAdmin()

例如:

创建函数

function isAdmin() {
    return 1;
}

回显函数

if (isAdmin() == 1) {
    echo "admin";
}

如何将 isAdmin() 更改为 $session->isAdmin()

我基本上是在尝试学习新东西,同时也这样做,因此非常感谢任何关于这方面的文档。

最佳答案

您所观察到的可能是其他框架用于用户 session 处理的包装器对象。

将您的代码更改为一个对象将是一种很好的做法,并且可以像这样工作:

<?php

/** Session.php  */
class Session 
{
    protected $isAdmin = 0;
    public function __construct() 
    {
        // ... do your session initialisation here ...
        if (USER_HAS_SOMESPECIAL_RIGHTS)
            $this->isAdmin = 1;
    }

    /**
    * Do we have admin rights?
    * @return bool
    */
    public function isAdmin() {
        return $this->isAdmin;
    }

    /**
    * Echoing out the current role in the system
    * @return string
    */
    public function getRole() {
        if ($this->isAdmin)
            return "admin";

        return "normal mortal being (at least not an admin)."
    }
}

用法:

include 'Session.php';
$session = new Session();   // This is when your code in __construct will be evaluated
echo $session->getRole();

当然,这只是一个简单的例子,一旦你接触了 OOP,你就会发现你可以在更大程度上抽象它。希望这对您有所帮助!

关于php - 如何将 isAdmin() 更改为 $session->isAdmin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193101/

相关文章:

mysql - 将行插入多对多表,但避免 FK 查找/子查询

jquery,css在长时间执行函数之前不会改变

php - 从未按预期工作的一年的第一天减去 1 天

php - echo 命令不执行任何操作

PHP:$_SESSION 变量未传递到另一个文件

mysql - 触发从一个数据库更新到另一个数据库的操作

r - 整洁评估:如何在依赖 %>% 管道的自定义函数中使用 dplyr::na_if 作为可选参数

php - 如何使用 PHP 创建自己的 pow 函数?

php - 正则表达式:删除白色字符

php - 比较从 MySql 数据库中提取的字符串日期