繁体   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