Php 在另一个函数中调用函数
我有一个函数Php 在另一个函数中调用函数,php,function,Php,Function,我有一个函数printContent(),用于打印参数和检查用户是否登录的logged() 我的观点是这样做: logged("printContent('TITLE', 'CONTENT', 1)", 1); 它不起作用。如果用户未登录,但未发生任何事情,则应printContent()。如果我尝试将return()更改为print(),它将打印文本“printContent(text…) 以下是两个功能: function logged($echo = 0, $logout = 0) {
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>';
}
}
function ifLoggedIn($loggedIn, $loggedOut)
{
return empty($_SESSION['user']) ? $loggedIn() : $loggedOut();
}
记录的函数($echo=0,$logout=0)
{
if($\会话['user'])
{
如果($echo)
{
如果(!($logout))返回$echo;
否则返回false;
}
否则返回true;
}
其他的
{
如果($logout==1)返回$echo;
否则返回false;
}
}
函数printContent($title,$content,$type=0){
如果($type==1){
回声';
如果($title)回显“.$title.”;
echo$内容。“;
}
否则{
回声';
如果($title)回显“.$title.”;
回显“.$content.”;
}
}
如果用户未登录,则应打印内容()
你可以试试
if(!logged())
{
printContent('TITLE', 'CONTENT', 1);
}
如果用户未登录,则应打印内容()
你可以试试
if(!logged())
{
printContent('TITLE', 'CONTENT', 1);
}
您的logged()
函数太复杂;$echo
和$logout
参数使得逻辑非常难以遵循。你应该把它简化为这样,把一件事做得很好:
function isLoggedIn()
{
return !empty($_SESSION['user']);
}
之后,逻辑变得非常简单:
if (!isLoggedIn()) {
printContent('title', 'content', 1);
}
播放时间
尽管这是一个非常做作的示例,说明了匿名函数可以实现的功能,但从5.3开始,您就可以这样做:
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>';
}
}
function ifLoggedIn($loggedIn, $loggedOut)
{
return empty($_SESSION['user']) ? $loggedIn() : $loggedOut();
}
$loggedIn
和$loggedOut
参数是回调参数,根据用户是否登录从函数内部执行。要使用它:
ifLoggedIn(function() {
}, function() {
printContent('TITLE', 'CONTENT', 1);
});
您的logged()
函数太复杂;$echo
和$logout
参数使得逻辑非常难以遵循。你应该把它简化为这样,把一件事做得很好:
function isLoggedIn()
{
return !empty($_SESSION['user']);
}
之后,逻辑变得非常简单:
if (!isLoggedIn()) {
printContent('title', 'content', 1);
}
播放时间
尽管这是一个非常做作的示例,说明了匿名函数可以实现的功能,但从5.3开始,您就可以这样做:
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>';
}
}
function ifLoggedIn($loggedIn, $loggedOut)
{
return empty($_SESSION['user']) ? $loggedIn() : $loggedOut();
}
$loggedIn
和$loggedOut
参数是回调参数,根据用户是否登录从函数内部执行。要使用它:
ifLoggedIn(function() {
}, function() {
printContent('TITLE', 'CONTENT', 1);
});
你要找的似乎是回电话 如果我理解正确,您希望仅执行printContent,如果用户已登录,是否正确
您可能需要检查此问题以了解更多信息:您似乎在寻找的是回调 如果我理解正确,您希望仅执行printContent,如果用户已登录,是否正确
您可能需要检查此问题以了解更多信息:您正在尝试执行普通字符串。使用
function1( function2() );
这与
$tmp = function2();
function1($tmp);
您正在尝试执行一个普通字符串。使用
function1( function2() );
这与
$tmp = function2();
function1($tmp);
“printContent('TITLE','CONTENT',1)”
是传递到$echo中的字符串。然后返回$echo,它只是一个字符串。你的if($echo)
检查没有做你想做的事情,因为$echo是作为字符串存在的。究竟为什么字符串应该作为PHP代码计算?请注意printContent()
没有返回数据:它只是在回显它。如果要将该函数的输出用作另一个函数的输入,则需要返回数据。因此logged()
函数可能会返回一个字符串,其中包含“printContent('TITLE','CONTENT',1)”。。。为什么你认为一个字符串应该返回另一个函数调用的结果,仅仅因为它包含另一个函数的名称?现在,你正在等待对建议使用eval()
“printContent('TITLE','CONTENT',1)”
的第一个答案进行向下表决,它是一个你正在传递到$echo中的字符串。然后返回$echo,它只是一个字符串。你的if($echo)
检查没有做你想做的事情,因为$echo是作为字符串存在的。究竟为什么字符串应该作为PHP代码计算?请注意printContent()
没有返回数据:它只是在回显它。如果要将该函数的输出用作另一个函数的输入,则需要返回数据。因此logged()
函数可能会返回一个字符串,其中包含“printContent('TITLE','CONTENT',1)”。。。为什么你认为一个字符串应该返回另一个函数调用的结果,仅仅因为它包含了另一个函数的名称?现在,我们正在等待第一个建议使用eval()
的答案,当然……如果可以简单地使用if,那么为什么回调会变得复杂呢+当然…如果你可以用if简单的话,为什么回叫会变得复杂呢+问题是,这将在运行function1
之前运行function2
,而这可能不是OP想要的。问题是,这将在运行function1
之前运行function2
,而这可能不是OP想要的。