Citation : avec un peu de méthode on peut s'en sortir avec les id nonChez Alstom, ça débouche sur des trucs magiques du type "ah ben je peux pas prendre l'ID 'document-form' parcequ'il est déjà pris dans la pop-in qui apparaitrait quand t'auras cliqué sur tel, tel puis tel bouton". Je trouve ça affreux à maintenir, mais si tu préfères du jQuery, t'es le chef chez toi.
Hum... "quelle iframe"... ben, le balisage HTML... Oui, le truc que si peu de "dev web" connaissent en fait (c'est pas contre toi, c'est juste chiant de voir tant de gens au taff qui disent faire du web mais qui n'ont jamais foutu le nez dans les specs du W3C/WHATWG...
Si, c'est bien la bonne méthode, mais là, je crois que tu as manqué de compréhension dans ce que t'as fait (t'as fait juste, mais t'as soit pas eu les bons mots, soit pas compris ce que t'as fait). Les includes de PHP sont fait coté serveur, et utiliseront le include_path de PHP. En revanche, les balises HTML sont interprétés par le navigateur du client (pas par le serveur, qui s'en fiche royalement), donc, elles n'auront rien à voir avec l'include_path de PHP.
C'est ça pour le include path. Plus précisément:
preg_match('~^(.*[/\\\\])www[/\\\\]~i', realpath(__DIR__), $matches);
set_include_path($matches[1] . 'php/');
Okay, c'est un peu crade, mais c'est du code dans se trouvant dans /www/handler/*/handler.php (= le point d'entrée des requêtes web traitées par PHP): chaque environnement a son propre dossier (/www/handler/prod ; /www/handler/local-dev ; /www/handler/staging etc). Un lien symbolique (/www/handler/current) se charge de pointer sur le bon environnement (et Mage se charge de créer ce lien symbolique lors du déploiement vers tel ou tel environnement).
Tu peux faire comme tu le dis (.class.php), mais si tu fais de l'OO, je te conseillerai de rester sur 1 classe = 1 fichier PHP et inversement 1 fichier PHP = 1 classe. Si tu commences à mixer de l'OO et du procédural, tu vas en chier (dans mon cas, ce "mix" a été contourné en mettant le procédural, le handler.php, dans le point d'entrée du serveur web PHP /www/handler/* et les classes sont dans /php/*, les deux sont donc bien séparés). Si tu veux malgré tout mélanger OO et procédural, fais de même: 1 dossier pour les classes, 1 dossier pour le procédural (ie: /php/class/ et /php/procedural/)
Tiens, cas typique des merdailles dues aux IDs: supposons qu'un pop-in contienne les plans des usines du jeu. Le joueur l'ouvre, et regarde les usines qui sont dedans, avec leurs infos. Maintenant, il voudrait ouvrir une seconde pop-in, identique (avec elle aussi les plans des usines), pour pouvoir faire des comparaisons (ou pour avoir le plan d'une usine dans un coin, pour se rappeler de la construire demain). Si cette pop-in a des IDs, tu vas en chier. Si cette pop-in est une iframe, t'auras aucun soucis (tu pourras en créer autant que tu veux; cette création, qui revient juste à insérer un <iframe src=".../.../*.php"></iframe>, peut se faire via javascript).
Les pop-ins en JS pur équivalentes à des alert() ou à des confirm() ou input(), okay. Pour le reste, je te le déconseille (tout ton jeu va se retrouver dans 1 et 1 seule page web, dans 1 et 1 seul contexte, et tu vas avoir plein d'effets colatéraux partout).