Salut
Ce post est dédié aux demandes d'évolutions, si vous souhaitez voir une fonctionnalité rajouté dans PMO, n'hésitez pas :mrgreen:
Version imprimable
Salut
Ce post est dédié aux demandes d'évolutions, si vous souhaitez voir une fonctionnalité rajouté dans PMO, n'hésitez pas :mrgreen:
Bonjour,
Pour mes développements, j'utilise habituellement une arborescence comme celle-ci :
- /
- apps
- app1
- app2
- etc.
- css
- img
- libs
- pmo
- js
Ceci me donne la possibilité d'utiliser une librairie, ici PMO, pour développer plus d'une application.
J'aimerais pouvoir disposer d'un class_loader dans chacune de mes applications, c.-à-d.
- /
- apps/
- app1/
- class_loader/
- app2/
- class_loader/
- etc...
- etc.
Dans ce contexte, j'aimerais pouvoir définir le chemin d'accès du répertoire class_loader avant d'appeler PMO_MyController.php
Voici ce que j'ai essayé. Pas certain que cela fonctionne. J'essaie encore de comprendre comment fonctionne PMO.
Dans PMO_MyObject.php
J'ai défini CLASS_LOADER dans le fichier de configuration de mon application sous /apps/app1Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public static function internalfactory(PMO_Table $table){ $classname = $table->getClassname(); if ($classname){ if (defined('CLASS_LOADER')) require_once(CLASS_LOADER . 'class_'.$classname.'.php'); else require_once(dirname(__FILE__).'/../class_loader/class_'.$classname.'.php'); $object = new $classname($table); }else{ $object = new PMO_MyObject($table); } return $object; }
HTHCode:
1
2
3
4 <?php define ('DS', DIRECTORY_SEPARATOR); define ('CLASS_LOADER', dirname(__FILE__) . DS . 'class_loader' . DS);
Louis
PS En regardant la prévisualisation de ce post, je crois que les accolades devraient être requises en tout temps. Cela rend le code plus facile à lire. Et, comme vous le dîtes dans votre blogue, ce ne seront pas ces quelques octets supplémentares qui vont ralentir nos applications.
PPS Merci pour ce ORM qui rend le développement d'une application Web 2.0 beaucoup plus facile.
Et rebonjour,
Je propose la même demande pour le dossier PMO_MyTable que celle qu j'ai fait pour class_loader, c.-à-d. avoir un dossier par application.
Modification que j'ai apportée à PMO_MyTable.php :
Définition de PMO_MYTABLE :Code:
1
2
3
4
5
6
7
8
9 public static function factory($tablename){ $class = self::$prefix.$tablename; if (defined('PMO_MYTABLE')) $filename = PMO_MYTABLE . $class.".php"; else $filename = dirname(__FILE__).'/PMO_MyTable/'.$class.".php"; (...)
À noter que votre define dépend de votre arborescence!Code:
1
2
3 define ('DS', DIRECTORY_SEPARATOR); define ('PMO_MYTABLE', dirname(__FILE__) . DS . 'PMO' . DS . 'PMO_MyTable' . DS);
Merci,
L
je regarde toutes ces modifs demain :mrgreen:
Bonjour,
Voici les fichiers tels que je les ai modifiés. Le fichier config.php est inclut dans mes programmes. J'ai ajusté un peu les chemins et les programmes pour que ça fonctionne... testé ce matin.
La structure :
Si les programmes ne trouvent pas leur classes dans les répertoires usagers, ils cherchent alors dans les répertories standards.Code:
1
2
3
4
5
6
7
8
9
10
11
12 webroot/ apps/ support/ pmo/ class_loader/ PMO_MyTable/ libs/ pmo/ class_loader/ PMO_core/ PMO_MyTable/
À noter que je n'ai pas testé le tout à 100%. Toutefois, PMO_MyObject.php et PMO_MyTable.php trouvent mes fichiers.
Je viens d'intégrer les modifications sur le subversion. Comme j'aime pas trop les variables globales, j'ai implémenté des static qui peuvent être set de cette façon et remplacer les define:
PMO_MyObject::setPath(lenomdurepertoire);
PMO_MyTable::setPath(lenomdurepertoire);
ça devrait correspondre à ton besoin :mrgreen:
c'est possible d'insérer des tests is_dir dans ces méthodes setPath() mais ça aura sans doute un impact non négligeable en terme de perfs, alors que la vérification de l'existence du repertoire n'a d'utilité qu'une fois au moment de l'intégration
Merci, je vais jeter un oeil dessus demain. Là, j'ai les 2 yeux dans la graisse de binnes.... :aie: Je suis sur mon code depuis les petites heures du mat...
Merci encore :D
Je viens tout juste de commencer à écrire un système de gestion du support.
Où je travaille, nous développons des applications de gestion pour les municipalités (Paie, Taxation, Loisirs, Cour municipale, comptabilité, etc.), le secteur de la santé et la petite et moyenne entreprise et nous offrons un support à la clientèle (évidemment!).
À l'heure actuelle, mon groupe (la gang municipale) utilise un chiffrier Excel pour savoir qui offre le support niveau 1, 2 ou 3, pour quel produit et à quelle date. Excuses-moi le québécois mais c'est toton :mouarf: cordonnier mal chaussé!!!
J'ai décidé de me taper (sur mon temps perso évidemment!!) le travail d'écrire une app pour gérer tout ça. Et tant qu'à le faire, je me suis dis que ce serait plaisant d'apprendre quelque chose en passant.
Louis
salut Louis :)
Je ne sais pas qui est toton le cordonnier mal chaussé mais ça m'a bien fait rire :mouarf:
Je suis preneur et intéressé par tes évolutions. Ca me permet de mieux comprendre les cas d'utilisations :mrgreen:
Ton aide sera plus que bienvenue.
Perso je vie à côté de Paris, je travaille en tant que chef de projet pour un gros fournisseur d'accès internet français ;)
A mes heures perdues, je fais du dev :mrgreen: mais pas sous influence :p
Pas de problème pour la deadline ;)
J'aimerais suggérer que PMO utilise un vrai système de gestion de demandes d'améliorations/corrections.
Personnellement, je préfère Trac mais il est écrit en python et il peut être difficile de l'installer si on ne contrôle pas le serveur ou son espace cgi-bin.
Une autre possibilité, en PHP celle-ci, est Mantis.
Je crois que PMO gagnerait à mieux gérer les demandes d'amélioration et les signalements d'erreur dès le départ.
L'utilisation d'un forum tel que celui-ci conduit trop facilement à des discussions qui n'ont possiblement pas de rapport avec le sujet du forum ou encore à de longues discussions sur les pour et les contre d'une demande, lesquels peuvent nous faire perdre de vue les demandes elles-mêmes.
Merci,
Laplix
je vais transmettre la demande à developpez.com :D
Je propose d'ajouter un paramètre afin de permettre l'affichage ou non de la query.
Ceci va nous permettre d'enregistrer la requête dans un log et empêcher de briser les pages webs.Code:
1
2
3
4
5
6
7
8 public function verboseQuery($query, $return = true){ if($this->verbose) if ($return) return $query; else echo "<br>".$query."<br>"; }
voila ce que j'ai rajouté:
ensuite il suffit par exemple de faire :Citation:
public function verboseQuery($query){
if($this->verbose)
$this->setLog($query);
}
echo $SGBD->getLog();
pour afficher la requête, qu'en penses tu ?
Salut
La taille du projet PMO ne justifie pas encore l'installation d'une telle application. Ce n'est pas impossible dans le futur, mais pour le moment nos admins sont très occupés.
Je pense que pour le moment, PMO peut très bien fonctionner avec un système de tags dans les libellés des discussions, par exemple :
Par ailleurs, cela se combine très bien avec le bouton :resolu:Citation:
[Bug] Titre de la discussion.
Si la quantité le justifie, dans le futur nous pourrons créer un forum spécifique pour les rapports de bug de PMO. Je ne suis pas persuadé qu'il soit justifié d'installer une application spécifique, d'autant plus qu'ensuite il faut la tenir elle-même à jour :aie:
Excusez-moi monsieur Yogui mais, à moins que je ne me trompe, developpez.com essaie d'attirer les développeurs de logiciel et veut concurrencer des sites comme sourceforge.net ou code.google.com, non?
Un système de gestion de bogue/amélioration profiterait à tous les utilisateurs de developpez.com, pas uniquement à PMO.
Alors, c'est quoi le problème? (dialecte québécois :mrgreen:)
Je suggère d'en faire un array. Sinon nous serons obligés de récupérer la propriété log après chaque instruction.
Avec un array, nous pouvons exécuter une série de requêtes et s'il y a problème, récupérer le log.
getLog() devrait alors réinitialiser la propriété pour ne pas accumuler trop de données.
D'un autre côté, si on ne récupère pas le log, il va s'accumuler. Pour contrôler ceci, verboseQuery
devrait utiliser un second paramètre, soit $retain = false
et utiliser ce genre de code :
De cette façon, nous avons toute la souplesse voulue. À la charge du développeur de ne pas accumuler trop de données en mémoire.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 protected $log = array(); protected $retain_log = false; public function setLog($log){ if ($this->retain_log) $this->log[] = $log; else $this->log[0] = $log; } public function getLog(){ if (isset($this->log)) $log = $this->log; if (!$this->retain_log) $this->log = array(); if(isset($log)) return $log; else return FALSE; } public function verboseQuery($query, $retain=false){ $this->retain_log = $retain; if($this->verbose) $this->setLog($query); }
PS En passant, nous nous tapons une sacré tempête de neige par chez nous!!! Dans les 35 cm! Le record à Montréal était 383 cm en 1971. Avant aujourd'hui, nous en étions rendu à 315 cm. Avec les 35 qui nous tombent sur la tête, on s'en rapproche pas à peu près. Et on est juste le 8 mars!!! J'ai écouté les nouvelles de TV5 ce matin. Vous vous tapez dans les 10 centigrades. hihihi Dites donc, savez-vous ce que ça veut dire le mot hiver???
Houlà non, nous ne concurrençons pas sourceforge ou googlecode... Nous restons dans l'hébergement gratuit d'articles ou de projets, et à notre mesure un tel outil ressemble à un bazooka pour tuer une mouche :aie: