0

printContent()引数を出力しlogged()、ユーザーがログインしているかどうかを確認する関数があります。

私のポイントは、次のようなことをすることです:

logged("printContent('TITLE', 'CONTENT', 1)", 1);

うまくいきません。ユーザーがログインしていない場合に発生するはずprintContent()ですが、何も起こりません。それに変更しようとすると、「printContent(text...)」というテキストが出力return()されます。print()

これらの 2 つの関数は次のとおりです。

function logged($echo = 0, $logout = 0)
{    
        if($_SESSION['user']) 
        {
            if($echo)
            {
                if(!($logout)) return $echo;
                else return false;
            }
            else return true;
        }
        else
        {  
            if($logout == 1) return $echo;
            else return false;
        }
}
function printContent($title, $content, $type = 0){
    if($type == 1){
        echo '<div class="right-box">';
        if($title) echo '<h3>'.$title.'</h3>';
        echo $content.'</div>';            
    }
    else {
        echo '<div class="left-box">';
        if($title) echo '<h2>'.$title.'</h2>';
        echo '<div class="left-box-content">'.$content.'</div></div>';
    }
}
4

4 に答える 4

4

ユーザーがログインしていない場合は printContent() する必要があります

あなたが試すことができます

if(!logged())
{
printContent('TITLE', 'CONTENT', 1);
}
于 2013-05-28T16:58:13.507 に答える
1

関数logged()が複雑すぎます。$echoおよびパラメータにより、$logoutロジックを非常に理解しにくくなります。これを単純化して、1つのことを非常にうまく行う必要があります。

function isLoggedIn()
{
    return !empty($_SESSION['user']);
}

その後、ロジックは非常に単純になります。

if (!isLoggedIn()) {
    printContent('title', 'content', 1);
}

プレイ時間

これは無名関数で実現できることの非常に不自然な例ですが、5.3 以降ではこれを行うことができます。

function ifLoggedIn($loggedIn, $loggedOut)
{
    return empty($_SESSION['user']) ? $loggedIn() : $loggedOut();
}

およびパラメータはコールバック パラメータで$loggedInあり$loggedOut、ユーザーがログインしているかどうかに基づいて、関数内から実行されます。使用するには:

ifLoggedIn(function() {
}, function() {
    printContent('TITLE', 'CONTENT', 1);
});
于 2013-05-28T16:58:37.163 に答える
0

あなたが探しているように見えるのは、コールバックです。

私があなたを正しく理解していれば、ユーザーがログインしている場合にのみ printContent を実行したいということでよろしいですか?

詳細については、この質問を確認してください: PHP でコールバックを実装するにはどうすればよいですか?

于 2013-05-28T16:58:41.813 に答える
0

プレーン文字列を実行しようとしています。使用する

function1( function2() );

それはと同じです

$tmp = function2();
function1($tmp);
于 2013-05-28T16:59:14.510 に答える