2016-10-04 31 views
0

我正在写一个函数,可以返回一个整数值或将此整数写入文件。 我希望通过调用函数来完成这个选择。 我可以做到吗?我可以知道如何调用PHP函数吗?

下面是函数:

function directory_space_used($directory) { 
// Space used by the $directory 
    ... 
    if ("call #1") return $space_used; 
    if ("call #2") { 
    $file=fopen(path/to/file, 'w'); 
    fwrite($file, $space_used); 
    fclose($file); 
    } 
    return null; 
} 

呼叫#1:

$hyper_space = directory_space_used('awesome/directory'); 
echo "$hyper_space bytes used."; 

呼叫#2:

directory_space_used('awesome/directory'); // Write in file path/to/file 

如果这是不可能的,我可以用在第二个参数该功能,但我想保持参数的数量尽可能低。

谢谢。

+0

检查这个简单:-http://php.net/manual/en/function.disk-total-space.php –

+0

谢谢@Anant但是这个函数(和disk_free_space之一)需要整个文件系统,我只是想该目录。 函数可能是其他任何东西,我只是想改变行为,如果我以不同的方式调用函数。 –

+0

你也可以通过目录。 –

回答

0

你可以保持数在会话变量,但我会建议第二个参数。它的清洁维护,你总是可以设置默认值,因此它只是用来在案件

function directory_space_used($directory, $tofile = false) { 
// Space used by the $directory 
... 
if ($tofile) { 
    $file=fopen(path/to/file, 'w'); 
    fwrite($file, $space_used); 
    fclose($file); 
}else{ 
    return $space_used; 
} 
    return null; 
} 

然后只需拨打一个什么样子:

directory_space_used('....', true) // saves in a file 
directory_space_used('....') // return int 
+0

你可以添加一个更好的下线代码示例?您可以通过使用帖子下方的修改链接来完成此操作。 – reporter

+0

@ some1special:如果我使用第二个参数,它不会很有趣:) –

+0

@reporter:看看我的问题中的电话。我尽可能写得清楚,因为主代码并不重要。 –

0

是的,你可以用这个神奇的常量

__FUNCTION__ 

,你可以读到它 here

只是要你的函数一个参数,而这parametter将是函数的名称请求来自并且在那之后你可以在if语句中使用它。

这是一个伪代码:

 //function that you want to compare 
     function test1() { 
     //do stuff here 
     $session['function_name'] = __FUNCTTION__; 
     directory_space_used($directory,$function_name); 
     } 

     //Other function that you want to compare 
     function test2() { 
     //do stuff here 
     $session['function_name'] = __FUNCTTION__; 
    } 

function directory_space_used($directory) { 
     // Space used by the $directory 
      ... 
      if(isset($session['function_name'])) { 
      if ('test1' == $function_name) return $space_used; 
      if ('test2' == $function_name) { 
      $file=fopen(path/to/file, 'w'); 
      fwrite($file, $space_used); 
      fclose($file); 
      } 
     } else { 
//something else 
} 

      return null; 
     } 

我认为将是更好的选择使用开关的情况下......这只是一个音符。

的test1的AMD TEST2可以随时随地在你的PHP文件和文件夹

+0

我的电话在主要脚本中,而不是在功能中。如果我创建其他功能,它将更难以维护。 –

+0

是的,但是你必须从你的函数中知道什么方式才能调用你的函数?或者我错过了一些东西...... – ivant87

+0

您可以使用会话来保留您想要比较的功能。$ session ['function_name'] = __FUNCTTION__;这段代码将它放在你想用于你的函数的所有函数中。之后,再给你的函数添加一个参数来检查是否有会话,如果你知道我的意思,会话名称(函数的名称)是什么? – ivant87

0

感谢所有,似乎更好的方法是在函数中添加第二个参数。没有我想要的那么有趣,但它可以轻松工作,无需使用大量代码。

相关问题