0

所以我浏览了一些 php 脚本,我已经看到$session->isAdmin()并且我喜欢它在代码中的外观......

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

前任:

创建函数

function isAdmin() {
    return 1;
}

呼应功能

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

我该如何isAdmin()更改$session->isAdmin()

我基本上是在尝试学习新东西的同时也这样做,因此任何有关这方面的文档都将不胜感激。

4

2 回答 2

4

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

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

<?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,你会发现你可以在更大程度上抽象它。希望这可以帮助!

于 2013-03-04T01:34:30.837 回答
0

我真的不明白你想用“$session”做什么......

我可以想象你有一个会话变量,我们称它为$_SESSION['user_type']1 如果管理员和 0 如果用户。

现在您想要一个说明管理员或用户的功能?

function isAdmin($type) {
    if ($type==1) echo "Admin";
    elseif ($type==0) echo "User";
    else echo "And who are you!?";
}

调用它:

isAdmin($_SESSION['user_type']);
于 2013-03-04T01:29:12.033 回答