Atributo não funciona

Oi guys, minha duvida é a seguinte:
Como podem ver, mudei meu atributo global ‘file’ , mas o getFile e setFile continuam funcionando dentro da classe File, sem dar erros. Acho q o atributo ‘file’ não está sendo relevante para meu método ‘uploadFile()’. Alguém pode me explicar e esclarecer isso por favor. Qual a solução
1ºImagem:

2ºImagem:

Código:

<input type="file" name="flUploads">

<button type="submit">Send</button>
<?php 

/**

  • metodos download e upload
    */
    class File {

    private $fileqerewrqwe;
    private $way;

    public function getFile(){
    return $this->file;
    }

    public function setFile($file){
    $this->file = $file;
    }

    public function getWay(){
    return $this->way;
    }

    public function setWay($way){
    $this->way = $way;
    }

    //metodos

    public function downloadFile() {

    }

    public function uploadFile() {

      if ($_SERVER["REQUEST_METHOD"] === "POST") {
      	
      	$this->setFile ($_FILES["flUploads"]);
    
      	if ($this->setFile($_FILES["flUploads"])["error"]) {
      		throw new Exception("Error: " . $this->getFile(["error"]));
      		
      	}
      	$drUploads = "uploadss";
    
      	if (!is_dir($drUploads)) {
      		mkdir($drUploads);
      	}
    
      	if (move_uploaded_file($this->getFile()["tmp_name"], $drUploads . DIRECTORY_SEPARATOR . $this->getFile()["name"])) {
      		echo "Ulpload de Sucesso!";
      	} else {
      		throw new Exception("Não foi possível o Upload.");
      		
      	}
      }
    

    }//metodo Upload Final

}
?>

Qual a dúvida, afinal? E o que isso tem a ver com encapsulamento?

quero que meu atributo global ‘file’ funcione dentro do método ‘uploadFile()’. entendeu?

Bom, essa linha…

if ($this->setFile($_FILES["flUploads"])["error"]) {

Você está buscando retorno do seu método setFile, mas ele não retorna nada, logo seu código pode “bugar” aí…

Depois nessa linha…

throw new Exception("Error: " . $this->getFile(["error"]));

Você está passando parâmetro ao método getFile, mas esse não recebe nada, não seria?

throw new Exception("Error: " . $this->getFile()["error"]);

Lembrando que essa forma só funciona em php >= 5.4 ok?

E por fim, tente deixar em caixa baixa (letra minúscula) o method do seu form de POST para post e veja o que acontece…

Deixei assim, e comentei o atributo “file”, como é possivel ainda funcionar normal? não entendo porque funciona normal os getters e setters sem dar erro no codigo.

    	public function uploadFile() {

	if ($_SERVER["REQUEST_METHOD"] === "POST") {
		
		$this->setFile ($_FILES["flUploads"]);

		if ($this->file["error"]) {
			throw new Exception("Error: " . $this->file["error"]);
			
		}
		$drUploads = "uploadss";

		if (!is_dir($drUploads)) {
			mkdir($drUploads);
		}

		if (move_uploaded_file($this->getFile()["tmp_name"], $drUploads . DIRECTORY_SEPARATOR . $this->getFile()["name"])) {
			echo "Ulpload de Sucesso!";
		} else {
			throw new Exception("Não foi possível o Upload.");
			
		}
	}