簡體   English   中英

在另一個函數中調用函數

[英]Calling function in another function

我有一個函數printContent() ,它輸出參數,而logged()則檢查用戶是否已登錄。

我的意思是要做這樣的事情:

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

沒用 如果用戶未登錄,但沒有任何反應,則應為printContent() 如果我嘗試將return()更改為print()它將打印文本“ printContent(text ...)”。

這是這兩個功能:

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>';
    }
}

如果用戶未登錄,則應為printContent()

你可以試試

if(!logged())
{
printContent('TITLE', 'CONTENT', 1);
}

您的logged()函數太復雜了; $echo$logout參數使邏輯極難遵循。 您應該將其簡化為這樣,非常好地做一件事:

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);
});

您似乎正在尋找的是回調。

如果我對您的理解正確,那么您希望只執行printContent,如果用戶已登錄,對嗎?

您可能需要檢查此問題以獲取更多信息: 如何在PHP中實現回調?

您正在嘗試執行一個純字符串。 采用

function1( function2() );

那和

$tmp = function2();
function1($tmp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM