Page 1 sur 1

Forcer une certaine extension de fichier dans le construct d'une Class

Posté : 28 sept. 2021, 10:43
par Shadowwera
Bien le bonjour !

Je viens demander votre aide car je ne trouve pas de solution.

En bref, je voudrais restreindre une variable (qui est le chemin + nom d'un fichier) à un certain type d'extension de fichier dans le construct d'une de mes classes.

Je sais que je peux vérifier l'extension avec la fonction pathinfo, mais je ne sais pas comment l'adapter au construct d'une classe.

Donc j'aimerais que, si le fichier n'existe pas ou que l'extension est différente de .docx, le construct renvoie une erreur et empêche d'appeler les fonctions de l'objet

Merci beaucoup pour votre aide !

class abc {
public string $path;

public function __construct($path) {
    $this->path = $path;

    if(pathinfo($this->path)['extension'] !== 'docx' || !file_exists($this->path)) {
        //throws an error and prevents the function call
    }
}

Re: Forcer une certaine extension de fichier dans le construct d'une Class

Posté : 13 oct. 2021, 15:56
par ynx
Bonjour,

Tu peux éventuellement déclencher une exception dans le constructeur avec throw :
class abc {
    public string $path;

    public function __construct($path) {
        $this->path = $path;
    
        if(pathinfo($this->path)['extension'] !== 'docx' || !file_exists($this->path)) {
            throw new Exception('Extension invalide ou fichier inexistant');
        }
    }
}
Et l'intercepter lors de la création de l'objet avec try/catch :
try {
    $file = new abc('no-exist.doc');
} catch (Exception $e) {
    echo 'Impossible de créer un objet abc : ' . $e->getMessage();
}