我可以知道如何称为PHP函数吗?

时间:2016-10-04 12:22:45

标签: php function

我正在编写一个可以返回整数值或将此整数写入文件的函数。 我希望通过调用函数来完成这个选择。 我可以这样做吗?

这是功能:

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

如果不可能,我可以在函数中使用第二个参数,但我想保留参数'数量尽可能低。

感谢。

3 个答案:

答案 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)

谢谢大家,似乎更好的方法是在函数中添加第二个参数。不像我想的那么有趣,但它很容易,而不需要使用大量的代码。