echo 'vercorshandisport.org'.DIRECTORY_SEPARATOR.'phpecho'."<br/>"; affiche vercorshandisport.org/phpecho. Ca me semble correct...
echo 'vercorshandisport.org'.DIRECTORY_SEPARATOR.'phpecho'."<br/>"; affiche vercorshandisport.org/phpecho. Ca me semble correct...
ça te semble correct parce que ton site tourne sous linux et que coup de bol, le séparateur de répertoires est identique au séparateur de segments d'une URL.
va jouer au loto, mon gars
Là, je sens que j'ignore quelque chose : sur le serveur, il y a bien des répertoires, donc pour moi, c'était correct. Séparateur de segments d'une URL, c'est quoi ?
J'ai vu que tu avais plusieurs erreurs dans tes fichiers :
Les noms sont sensibles à la casse : tu avais laissé : $page = new PhpEcho([DIR_ROOT, 'view Layout.php']); avec un L majuscule alors que ton fichier commençait avec un L minuscule
Une erreur dans index.php : tu avais mis
alors que DIR_ROOT se termine déjà par un DIRECTORY_SEPARATOR.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 // ici on va chercher notre classe de moteur de rendu include DIR_ROOT.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'PhpEcho'.DIRECTORY_SEPARATOR.'PhpEcho.php';
Quelle version de PHP sur le site ?
Réessaie maintenant stp
Compte tenu de la problématique de laurentSc qui bosse encore sous PHP 5.3+, j'ai mis à jour le billet de blog avec une version de PhpEcho compatible pour les anciennes versions PHP minimum 5.3
Pourquoi cette magie qui fait que ça marche maintenant ?
Version PHP du site : 5.6
Non, mon fichier est bien Login.php (avec un L majuscule)
J'ai enlevé DIRECTORY_SEPARATOR en trop dans index.php, mais ça marchait déjà avant.
Tu m'as pas dit ce que c'était les séparateurs de segment dans les URLs...
à ton avis ?
Ben ouais p'têt, mais moi je te parlais de layout.php, faut vraiment aller chez le garagiste des yeux mon pote
une URL est bâtie d'après la norme RFC3986 ou la norme RFC3987, toutes les deux décomposent une ressource internet (au sens générique URI ou IRI) en segments : scheme, host, path, port, query, fragment
Et la norme fixe que le préfixe de certains segments est /.
Le préfixe d'un segment query est le ?, ou d'un fragment qui est le #.
C'est normé, yapuka suivre la norme.
Ton souci venait du fait que le code source initial de PhpEcho n'était que pour PHP 7+ et comme tu tournes sous PHP 5.6, cela t'envoyait une page blanche car la syntaxe n'était pas compatible => plantage du parseur PHP 5.6
C'est la raison pour laquelle j'ai posté une version compatible PHP 5.3+
Bonjour,
j'ai publié le code source de PhpEcho sur mon espace Github,
Vous noterez que j'ai légèrement amélioré la version en y ajoutant la possibilité de renvoyer directement du code html sans passer par l'inclusion d'un fichier.
Je mettrai à jour mon billet avec cette nouvelle fonctionnalitédemainet y ajoutant d'autres explications.
Bonjour,
Mise à jour du billet terminée : code source mis à jour et pour les explications, le paragraphe 6.1 - CODE DE RENDU SANS L'INCLUSION DE FICHIER EXTERNE a été ajouté.
rawsrc
Merci, et au fait, pourrais-tu expliquer en quoi l'existence de __ToString() permet l'utilisation de $this ?
Salut laurentSc
ce n'est pas la fonction __toString() qui permet l'utilisation de $this, __toString() permet de s'assurer que l'instance de la classe va bien renvoyer du texte quand c'est nécessaire au lieu d'une erreur fatale. C'est cette fonction qui permet de faire echo $page;, $page est une instance de la classe PhpEcho qui implémente la fonction magique __toString().
L'existence de $this est directement liée aux propriétés du mécanisme d'inclusion de PHP
En gros, il faut bien comprendre que le fichier englobé (inclus) a à sa disposition tout ce qui a été défini dans le fichier englobant (celui qui l'inclut)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public function __toString() { if (($this->file !== '') && is_file($this->file)) { ob_start(); include $this->file; // c'est à cette ligne de code que tout se joue : $this est dispo dans le fichier inclus return ob_get_clean(); } else { return $this->code; } }
Je me replonge dans Phpecho maintenant.
D'abord Justement ce que tu évoques dans le post précédent (#34), la signification de $this dans Layout.php.
Je regarde de nouveau la version en ligne : https://vercorshandisport.org/phpecho/index.php. Tu l'avais "magiquement" fait marcher. Ce n'est plus le cas. Je me suis assuré d'avoir la version de la classe Phpecho compatible PHP 5.3+ (je l'ai rechargée) mais rien y fait. Pour info, voici le code source de la page :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>
Salut laurentSc
ben si ça fonctionnait et que maintenant ça ne tourne plus c'est que tu y as mis les doigts. Il faut remonter tes tripatouillages un à un pour voir celui qui fait tout planter.
Salut rawsrc,
oui, je suis convaincu que j'ai introduit ce dysfonctionnement, mais n'utilisant pas d'outil de versionning, impossible de remonter jusqu'à une version qui marchait .
Je m'en mords les doigts. Quel outil me conseilles-tu pour que cette mésaventure ne se reproduise pas ? (j'y connais rien, mais j'ai lu que ça peut être assez lourd d'utilisation)
Finalement, je viens de retrouver (j'avais oublié que je l'avais fait) une version qui marche . Cela dit, pour me mettre à l'abri de ce genre de mésaventure, je reste intéressé par un conseil sur un outil de versionning.
ce n'est pas ce qui manque ^^
En local, les mastodontes font très bien l'affaire : GitHub, GitLab, Mercurial, Apache Subversion...
GitHub étant le seul nom que je connaisse, je l'ai installé. Puis j'ai lu que c'était surtout bien pour les utilisateurs de linux et que pour Windows, il valait mieux mercurial. Je l'ai donc installé aussi. Mais ça s'arrête là. J'essaye de suivre ce tuto : https://dblugeon.developpez.com/tuto...rial/intro/#LI. J'y lisC'est bien gentil, mais où taper cette commande ? J'ai bien mercurial qui s'est rajouté dans mon menu démarrer, mais rien pour lancer le logiciel...Si vous êtes seul, vous devez initier votre dépôt mercurial. Pour cela, placez vous dans le répertoire contenant les sources à versionner désiré et tapez la commande suivante :
Sélectionnez
hg init
...
Quel outil utilises-tu, toi ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager