2014-01-17 69 views
0

我想實現一個有點複雜的功能,並希望避免回收代碼,當我需要的是將其分成適當的語句。如何在我的函數中正確組織語句?

我有添加和編輯內容的表單。如果用戶希望添加新內容,則表單爲空,並在提供所有必需的輸入後,將輸入插入數據庫(表單調用保存功能並將new作爲參數)。其中一個輸入是圖像。該圖像僅在用戶添加新內容時需要。在這種情況下我的功能是這樣的:

function save($method) 

    if $method == "new"{ 
    1. collect input 
    2. check if image was provided: if($_FILES['userfile']['tmp_name'] != '') 
     2.1 upload original image 
     2.2 create and upload thumb to thumb folder 
     2.3 create and upload resized image to cover folder 
     3.3 insert input into DB 
    3. else reload page with error 
    } 

我現在想實現用同樣的方法編輯功能,只提交按鈕現在提供的內容作爲參數的函數的ID。它在這裏我卡住了。我無法弄清楚應該添加哪些附加條件以及我應該放置哪些條件。我需要的功能,工作方式如下:

$method"new"和圖像選擇運行完整的一步1 & 2

$method"new"和形象並沒有提供運行步驟12其中2給出錯誤並運行3

$method"X"和圖像提供運行全步1 & 2但不是插入做更新內容ID X

$method"X",不提供圖像忽略圖像上傳&操作和更新所有的領域,除了圖像

我希望這是有道理的你。我沒有要求實際的PHP代碼,我只想知道我應該檢查什麼以及在哪裏。我只是不想在上傳代碼總是一樣時使用上傳代碼,等等。感謝您閱讀並提前回復您的回覆。我會繼續自己處理這個問題,如果不明白,我會更新這個問題。

+0

一個建議是真正清楚地分離方法的基礎上可能來自用戶的錯誤 - 沒有圖像,文件不是有效的圖像格式 - VERSUS服務器錯誤,像它沒有創建縮略圖。 – cartalot

回答

0

將您的函數重構爲幾個函數,其中一些函數可能需要一個或兩個額外的參數。然後從你寫的函數中調用這些函數來實現你的各種「方法」。

+0

是的,我只是在考慮這個選項。將盡快發佈更新。 –

0

行,所以我分組的語句如下:

if method == NEW && no image 
    reload page with error 
else 
    if file exists 
     upload image 
     if upload failed 
      reload page with error 
     else 
      create thumb 
      create cover 
      data array (name, ..., image paths) 
     if method == NEW 
      db insert, data array 
     else //we are updating 
      db update, where id = $method, data array 
     redirect manager 
    else 
     data array (name, ..., NO IMG DETAILS) 
     db update, where id = $method, data array 
     redirect content 
    } 
} 

絕對不是最好的做法,但它的工作原理。我並不想創建額外的函數並調用這些函數,因爲額外代碼的數量大致相同。我現在回收的唯一東西是data arrayredirect content

相關問題