我正在编写一个可以返回整数值或将此整数写入文件的函数。 我希望通过调用函数来完成这个选择。 我可以这样做吗?
这是功能:
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 :(得分:0)
是的,你可以使用这个魔法常数
__FUNCTION__
你可以阅读它 here
在你的函数上再添加一个参数,这个参数将是请求来自的函数的名称,之后你可以在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文件和文件夹中的任何地方
答案 1 :(得分: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
答案 2 :(得分:0)
谢谢大家,似乎更好的方法是在函数中添加第二个参数。不像我想的那么有趣,但它很容易,而不需要使用大量的代码。