2010-03-26 6 views
6

En ce moment, lorsque je remarque un problème sur une page de mon site Web PHP, je dois regarder l'URL, en déduire mentalement quel fichier est responsable de l'affichage de cette page, puis naviguer l'arborescence de fichiers Eclipse PDT pour ouvrir ce fichier. C'est ennuyeux et utilise la puissance du cerveau qui aurait pu être appliquée pour résoudre le problème à la place.Ouverture d'un fichier local dans Eclipse à partir du Web

Je voudrais que mon site web PHP affiche sur chaque page un lien sur lequel je pourrais cliquer pour ouvrir automatiquement le bon fichier dans Eclipse.

Je peux facilement calculer le chemin absolu complet pour le fichier que j'ai besoin d'ouvrir (par exemple, ouvrez C: /xampp/htdocs/controllers/Foo/Bar.php lorsque vous visitez/foo/bar), et je peux faire Je suis sûr que Eclipse est actuellement ouvert avec le bon projet chargé, mais je suis bloqué sur comment je peux avoir Firefox/Chrome/IE dire à Eclipse d'ouvrir ce fichier spécifique.

Modifier

Je vais sur le chemin d'une donnée: URI, en ajoutant un lien vers mon dossier qui contient le nom du fichier, avec un type MIME inhabituel.

<a href="data:link/php;base64,IkM6XHhhb[snip]GhwIgo="> 
    View controller 
</a> 

Le contenu codé en base64 est le chemin absolu du fichier sur mon ordinateur. Lorsque je clique sur le lien, Firefox me permet de lier le type de contenu à une nouvelle application, j'ai donc choisi un fichier batch je me suis écrit:

for /f "delims=" %%i in (%1) do (
    notepad.exe "%%i" 
) 

Cela fonctionne. Maintenant, je voudrais que le fichier soit ouvert dans la fenêtre déjà ouverte de Eclipse. Que dois-je remplacer notepad.exe dans le lot ci-dessus?

Répondre

3

[pathtoeclipse] \ eclipsec.exe -nom Eclipse --launcher.openFile [fullpathtoyourfilehere]

Je ne sais pas si cela fonctionne avec Galileo (je suis sur Helios)

Pour en savoir plus: https://bugs.eclipse.org/bugs/show_bug.cgi?id=4922 (c'est une histoire longue et longue)

+0

Une histoire longue mais intéressante. Merci pour les heads up. On dirait que ma version ne fonctionnera pas bientôt ... –

2

J'ai essayé des choses similaires dans le passé, mais ce n'est pas aussi simple que cela devrait être. Le résultat final était toujours que Firefox aurait besoin d'une extension pour exécuter un fichier local (je n'en ai jamais trouvé un qui ferait l'affaire), et IE ne le fera plus du tout (sauf, peut-être, pour un VBScript propriétaire compliqué/WScript).

Je vois deux solutions de contournement pour ce faire:

  1. Une fonction qui affiche le chemin du fichier sur votre page dans une grande fenêtre de dialogue gras, le rendant facile à copier et coller dans le de Windows + R Boîte de dialogue "Exécuter"

  2. Vous pouvez également enregistrer un protocole personnalisé (par ex. eclipse://) dans votre système d'exploitation et lier ce protocole à Eclipse. C'est un très bon moyen en fait, je n'ai pas encore essayé mais je le ferai certainement dans le prochain projet. Mozillazine: Register protocol (voir l'exemple de fichier .reg)

+0

Symfony fait quelque chose comme le protocole personnalisé pour les stacktraces. Je ne sais pas exactement ce qu'il fait (je n'utilise pas l'IDE pour lequel ils ont construit la fonctionnalité) mais @Victor vérifie Symfony. –

+0

Intéressant. J'ai pensé à utiliser un data: url pour télécharger un fichier avec une extension personnalisée contenant le chemin d'accès au fichier local, et lier cette extension personnalisée à un fichier batch qui ouvrirait le fichier dans Eclipse. Mais je ne peux pas sembler obtenir Eclipse pour ouvrir un fichier PHP sur le disque dans l'instance actuellement ouverte. Windows + R ne semble pas non plus ouvrir le fichier dans Eclipse. –

+0

@Victor le problème Windows + R vous devriez être en mesure de trier en associant Eclipse avec l'extension .php (je pense que c'est Maj + clic droit sur un fichier PHP dans l'Explorateur -> "Ouvrir avec ...." -> Choisir "Select application" -> ... (le libellé est approximatif, je n'ai qu'un Windows 7 allemand sous la main)). –

0

Vous obtenez le chemin local avec FICHIER.

Peut-être que vous essayez quelque chose comme ça?

<?php 
'127.0.0.1' == $_SERVER["REMOTE_ADDR"] and print __FILE__; 
?> 
+0

Veuillez lire la question s'il vous plaît. –

+0

@Viktor: Toscho fournit effectivement de bons conseils, s'ils sont incomplets. Autrement dit, plutôt que de coder en dur l'emplacement de chaque script PHP dans son code source, on pourrait plutôt extraire dynamiquement cet emplacement en utilisant la constante magique _ _ \ _ FILE__. Vous pourriez alors construire une éclipse: // extract_file_name_here URI (ou utiliser un autre mécanisme pour ouvrir le fichier - c'est à côté du point). Ce serait évidemment moins de travail, et plus robuste, que de coder en dur l'emplacement. – user359996

+0

@ user359996: trouver le nom du fichier inclus est un problème résolu. Non seulement cela, mais il est déjà résolu d'une manière beaucoup plus robuste que l'utilisation de __FILE__: j'utilise le code du répartiteur pour déduire l'action en cours d'exécution, et le code de chargement automatique de la classe pour déterminer dans quel fichier il se trouve. Impossible d'obtenir le fichier à ouvrir dans Eclipse (bien que j'ai réussi à l'ouvrir dans le bloc-notes!). Construire le mécanisme pour ouvrir le fichier est le point entier de la question. Comment pouvez-vous dire que c'est à côté du point ?? –

0

L'intégration d'Eclipse avec Xdebug est-elle une option? Je l'ai fait avec TextMate afin que les messages d'erreur générés sont cliquables pour me prendre à la bonne ligne dans le bon fichier. (Voir this question pour plus de détails).