Conception Module avec PHP classe

Bonjour à tous!

Sous Drupal7, débutant, je voudrais concevoir un module qui interagirait avec un fichier php contenant une classe, cette classe contiendrait mes fonctions d'accès à la base de données.

Est ce possible? Si oui, comment?
Merci d'avance

Forum : 

Et bien tout simplement en incluant le fichier DatabaseAccess.class.php à ton module
(require "class/DataBaseAccess.class.php";)
Dans ce fichier tu y placeras toutes tes fonctions d'accès à la db.
Dans ton module tu crées un objet DatabaseAccess, et tu exécutes ces fonctions.
Et voila, tout simplement.

Personnellement, le but de cette manoeuvre fut de centraliser tout les accès db de tout les fichiers de mon modules ( le .module, les formulaires, les autres classes,..) pour une meilleure maintenance

Sous drupal 7 il y a une manière plus propre dorénavant.

Il faut déclarer le fichier contenant le ou les classes dans le .info, et Drupal chargera se fichier en cas de besoin:

files (Optional)

Drupal now supports a dynamic-loading code registry. To support it, all modules must now declare any code files containing class or interface declarations in the .info file, like so:

name = Example module
description = "Gives an example of a module."
...
files[] = example.test

When a module is enabled, Drupal will rescan all declared files and index all the classes and interfaces that it finds. Classes will be loaded automatically by PHP when they are first accessed.

Bonjour, je souhaite factoriser un certains nombre de traitement dans une classe. mon module : GestionVoitures. -GestionVoitures.info -GestionVoitures.class

-GestionVoitures.module

Dans le Fichier .info

files[] = GestionVoitures.module
files[] = GestionVoitures.class

Dans le Fichier .class

<?php
class GestionVoiture{
 private
$modele;
    function
__construct( )     { ....     }
    public function
Rouler($modele){ ...    }
}
?>

Dans le Fichier .module J'ai une erreur : Fatal error: Call to undefined function Insert()

function Simulateur() {
....
Rouler($modele);
....

}

j'ai essayer plusieurs solution:
Avec et sans déclaration :GestionVoiture = new GestionVoiture();->erreur: Parse error: syntax error, unexpected '='
et ces deux syntaxes ....
GestionVoiture->Rouler($modele);
GestionVoiture::Rouler($modele);

Auriez vous une idée?

elgringo

Je te conseil de le faire avec xautoload (module drupal).

Exemple concret :
Créer ton module : supermodule/
Créer un dossier src/ dans ton module ce qui permettra de ranger bien proprement tes fichiers :)
Ensuite créer tes fichier maclass.class.inc ou maclasss.php
Dans ton fichier maclass.php il faut mettre namespace Drupal\supermodule;
Pour l'utiliser dans ton .module utilise un use Drupal\supermodule\nomdetaclass;
Tu n'aura pas besoin d'ajouter dans le info files[].

Développeur php drupal