我有一个函数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>';
}
}
答案 0 :(得分:4)
如果用户未登录,则应该是printContent()
你可以尝试
if(!logged())
{
printContent('TITLE', 'CONTENT', 1);
}
答案 1 :(得分: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);
});
答案 2 :(得分:0)
您似乎正在寻找的是回调。
如果我理解正确,您希望printContent仅在用户登录时执行,是否正确?
您可能需要查看此问题以获取更多信息:How do I implement a callback in PHP?
答案 3 :(得分:0)
您正在尝试执行纯字符串。使用
function1( function2() );
与
相同$tmp = function2();
function1($tmp);