2009-10-18 26 views
-1

內變量的問題我有這個在我的課某種關閉PHP類

當第二個函數被調用PHP錯誤與 錯誤的數據類型,只有變量可參照過去。

我不知道他們的意思是說

代碼來自php.net 如果相同的代碼是它執行罰款類

我在做什麼錯在這裏之外,如果我我正在上課嗎?

$extensiesAllowed= array(); 

function __construct() { 
     $this->extensiesAllowed= array("txt", "pdf"); 
     $this->fileName= $_FILES['file']; 
    } 


    private function isAllowedExtensie($fileName) { 

    return in_array(end(explode(".", $fileName)), $this->extensiesAllowed); 
    } 



public function check_upload() { 

     if($this->fileName['error'] == UPLOAD_ERR_OK) { 
      if(isAllowedExtensie($this->fileName['name'])) { 
      return true; 

      } 
     } 
    } 

php的錯誤顯示

Array 
(
    [bestandsNaam] => ACCOUNT INFO.txt 
    [extensiesAllowed] => 
) 

謝謝,理查德

+0

這可能會更好,如果你可以發佈整個班級,併發布錯誤消息你得到 – Mez 2009-10-18 23:11:52

+0

沒有,沒有什麼比它更多的調試 我保留了其餘的,你有錯誤信息? 我剛編輯它 – Richard 2009-10-18 23:16:31

+0

這不是一個錯誤信息! – Mez 2009-10-18 23:17:03

回答

2

嘗試把結束和爆炸在單獨的語句 - 我認爲end()可能通過引用來閱讀。在任何情況下,如果它不修復它,它將幫助您找出哪些線路會導致您的問題。

+0

'end()'確實通過引用傳遞。另一種方法是使用'pathinfo()'(http://php.net/pathinfo)。 – outis 2009-10-18 23:36:09

+0

$ a = explode(「。」,$ filename); \t \t return in_array(end($ a),$ this-> extensiesAllowed); 我真的不明白,但錯誤消失了。 這樣做似乎並不明顯,因爲它在課堂外運作良好。 – Richard 2009-10-18 23:41:56

0

在第二個函數/方法你應該叫應叫isAllowedExtensie通過$ this-> isAllowedExtensie()

if($this->isAllowedExtensie($this->fileName['name'])) { 

編輯:忘記我的第二條評論..

+0

哦,狗屎我錯過了那一個,那是一個。現在我只剩下第一個錯誤了。通過引用錯誤傳遞。 – Richard 2009-10-18 23:25:13

+0

我真的不知道爲什麼,但將語句分別結束()和爆炸()分開了。 – Richard 2009-10-18 23:51:52

+0

好的。我喜歡downvotes – 2009-10-19 00:08:27