Syntaxe - Appel de classes et fonctions

Syntaxe - Appel de classes et fonctions

par Olivier Valentin,
Nombre de réponses : 5
Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles

Bonjour à tous,

je travaille sous Moodle 3.5.2+. Mon niveau actuel en programmation : grand grand grand grand débutant... Voire pire.

Je travaille sur un bloc, mais j'ai un souci pour appeler une fonction disponible dans Moodle. Je n'arrive pas à trouver la bonne programmation pour faire cet appel.

Il s'agit de la fonction "move_courses_into_category", qui se trouve dans la classe "helper" dans un fichier situé dans moodle/course
/classes/management/helper.php. J'ai essayé plusieurs façons, en suivant la documentation et notamment https://docs.moodle.org/dev/Automatic_class_loading

Actuellement voici les éléments qui sont censés appeler cette fonction, je ne comprends pas où se trouve l'erreur !

instance = new \course\management\helper();
move_courses_into_category(get_config('monbloc', 'category'), array('id' => $courseid));

Cette syntaxe n'a pas fonctionné non plus :

$instance = new \course\classes\management\helper.php();

J'ai également essayé de rajouter l'appel au fichier en en-tête :

require_once(__DIR__ . '/../../course/classes/management/helper.php');

Si quelqu'un peut me mettre sur la voie sur la façon d'appeler une fonction dans une classe, cela m'aiderait beaucoup !

Merci !

Olivier

Moyenne des évaluations  -
En réponse à Olivier Valentin

Re: Syntaxe - Appel de classes et fonctions

par Olivier Valentin,
Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles

Problème résolu !

En relisant la page des chargements automatiques de classes et la documentation du Frankenstyle https://docs.moodle.org/dev/Frankenstyle, j'ai compris mon erreur.

La syntaxe à adopter était :

$instance= \core_course\management\helper::move_courses_into_category($categorie_de_destination, $id_du_cours);

Le require_once au début de mon fichier est par ailleurs inutile.

Bref, un grand progrès, et mon bloc fonctionne parfaitement ! sourire

En réponse à Olivier Valentin

Re: Syntaxe - Appel de classes et fonctions

par Erwan Gallenne,
Avatar Développeurs de plugins

Bonjour Olivier,


Pour comprendre la syntaxe, la méthode move_courses_into_category de la classe helper est définie comme static donc il n'est possible de l'appeler sur un objet, cette méthode doit être appelée sur la classe donc avec la syntaxe

NomDeLaClasse::methode()

Pour ce que précède le nom de la classe, il s'agit du namespace (espace de nom) qui est systématiquement présent en début de fichier.

Donc on a une syntaxe complète avec:

\namespace\NomDeLaClasse::methode()


Bon courage pour l'apprentissage de la programmation


Erwan

Moyenne des évaluations Utile (2)
En réponse à Erwan Gallenne

Re: Syntaxe - Appel de classes et fonctions

par Olivier Valentin,
Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles

Bonjour Erwan,

merci pour ton retour ! j'ai relu un peu plus attentivement la documentation sur le namespace, cela m'a effectivement été bien utile. Mon apprentissage avance tout doucement, d'autant que mes années de programmation sont un peu loin derrière moi. Mais je suis tout de même surpris par la facilité de prise en main dès le moment où on trouve les bonnes pages expliquant la façon d'appeler les fonctions, la manière d'écrire le code etc. 

Bonne journée !

Moyenne des évaluations Utile (1)
En réponse à Olivier Valentin

Re: Syntaxe - Appel de classes et fonctions

par Luiggi Sansonetti,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Titulaires du Moodle Course Creator Certificate Avatar Traducteurs

Mon apprentissage avance tout doucement, d'autant que mes années de programmation sont un peu loin derrière moi

Ben, retourne-toi.

(ok je sors... timide)

En réponse à Luiggi Sansonetti

Re: Syntaxe - Appel de classes et fonctions

par Olivier Valentin,
Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles

Va y avoir une ambiance de folie au prochain MoodleMoot... y'aura un atelier "jeux de mots de ouf" ? :D

Luiggi : pour info, le truc que je bricole est en relation avec ma discussion lancée sur le forum technique autour du ménage dans Moodle : https://moodle.org/mod/forum/discuss.php?d=379716

Il s'agit d'un bloc pour les enseignants, leur permettant de demander à ce que leur cours soit supprimé. Le bloc déplace le cours dans une catégorie-poubelle, le passe en "caché", envoie un mail à l'enseignant pour l'avertir de la démarche et change la date de fin de cours à la date souhaitée par l'enseignant. Manquerait encore la possibilité de restaurer le cours si jamais il a fait une erreur, ou un lien pour prévenir l'admin directement.

Olivier