2016-10-04 58 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

感謝所有,似乎更好的方法是在函數中添加第二個參數。沒有我想要的那麼有趣,但它可以輕鬆工作,無需使用大量代碼。

相關問題