Après avoir résolu mon problème de séparation des données
Je continue dans ma quête de l'orienté objet. J'ai trois questions à vous soumettre :
1) Comment faire pour permettre à une classe d'accéder au méthode d'une autre classe instanciée avant celle-ci..
..
</head>
<body>
<?
$mysql = new MySql();
$user= new User();
?>
</body>
</html>
Ma classe User aura besoins de faire des requêtes sur la base de donnée, je voyais trois solutions la qu'elle est la plus appropriée ?a) Je lui passe $mysql en paramètre .
$user = new User($id,$mysql);
b) J'utilise une global dans ma classe qui me permet d'accèder a $mysql
class User {
function __construct() {
global $mysql;
}
}
c) J'instancie une nouvelle fois ma classe dans User ?2) Seconde question, dans ma class Nagios, j'ai ce type de donnée :
Comment je peux les organiser ?Serveur
|--> Status Ok
|--> Date : Now
|--> Groupe : Groupe1
|--> Nextcheck : Dans 10min
|--> Maintenance
|------> Demain 18h
|------> Après demain 14h
a) Une class NagiosItem qui me permettrait d'avoir en retour de $nagios->Maintenance() le tableau attendu et les info avec les accesseur ?
b) Un tableau à plusieurs dimensions ?
3) Et pour terminer la troisième question : pour ma class Nagios j'aurais (pour le moment) deux méthodes :
$nagios->etatServices()
Qui me rendra les états actuels de mes services ( Web: Ok, Mysql: Ok, Mail: Ok, Irc: Down, Ftp: Maintenance)Pour avoir ce genre d'info je dois faire une requête assez lourde :
Code : Tout sélectionner
SELECT npc_services.display_name,npc_servicestatus.current_state,npc_scheduleddowntime.id
FROM npc_services
INNER JOIN npc_servicestatus ON npc_services.service_object_id = npc_servicestatus.service_object_id
LEFT JOIN npc_scheduleddowntime ON npc_scheduleddowntime.object_id = npc_services.service_object_idCette requete sera effectuée uniquement sur ma page d'accueil, je n'indique pas le status partout..
Ensuite, sur une autre page ( disons statuts.php) je voudrais afficher l'ensemble des services, des maintenances et des statuts et pour ça voici la requête :
Code : Tout sélectionner
SELECT npc_services.display_name,npc_servicestatus.output,npc_servicestatus.current_state,
npc_servicestatus.current_check_attempt,npc_servicestatus.max_check_attempts,
npc_servicestatus.last_check,npc_servicestatus.next_check,npc_servicestatus.last_state_change,npc_servicegroups.alias,
npc_scheduleddowntime.author_name,npc_scheduleddowntime.comment_data,npc_scheduleddowntime.scheduled_start_time,npc_scheduleddowntime.scheduled_end_time
FROM npc_services
INNER JOIN npc_servicestatus ON npc_services.service_object_id = npc_servicestatus.service_object_id
INNER JOIN npc_servicegroup_members ON npc_servicegroup_members.service_object_id = npc_services.service_object_id
INNER JOIN npc_servicegroups ON npc_servicegroup_members.servicegroup_id = npc_servicegroups.servicegroup_id
LEFT JOIN npc_scheduleddowntime ON npc_scheduleddowntime.object_id = npc_services.service_object_idEt voilà la question :
a) Pensez-vous que je devrais lors de l'instance de ma classe faire la grosse requête et récupérer mes informations utiles en fonction de la page ?
b) Ou alors, je fais ma première requête et si je vais sur la page statuts.php je complète mes informations ? (Ou je les récupères toutes sachant que je suis plus a 3 champs prêt)
Je sais que ces questions peuvent vous paraitre simple, mais j'essaye actuellement de refaire mon site en POO et je veux le faire bien..
Merci de m'avoir lu, j'attends vos réponse !!
Bonne fin de journée