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

Avatar du membre
Eléphant du PHP | 70 Messages

28 sept. 2021, 10:43

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
    }
}
" La révolution informatique fait gagner un temps fou aux Hommes, mais ils le passent avec leur ordinateur ! " by Khalil Assala

ynx
Eléphant du PHP | 323 Messages

13 oct. 2021, 15:56

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();
}