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を保持するものとしましょう。

admin または user を綴る関数が必要ですか?

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 に答える