Skip to content

Fix 250130 - #40

Open
bazooka07 wants to merge 5 commits into
299Ko:masterfrom
bazooka07:Fix-250130
Open

Fix 250130#40
bazooka07 wants to merge 5 commits into
299Ko:masterfrom
bazooka07:Fix-250130

Conversation

@bazooka07

Copy link
Copy Markdown
Contributor

Several fixes and typo errors

@NemStudio18

NemStudio18 commented Jan 31, 2025

Copy link
Copy Markdown
Collaborator

sans RecursiveIteratorIterator::SELF_FIRST ça ne marche pas chez moi ...

correctif :

spl_autoload_register(function ($class) {
    $class = strtolower($class);
    $pattern = '#^' . preg_quote($class, '#') . '(?:\.class)?\.php$#i';

    if (!defined('COMMON')) {
        die('Erreur : COMMON n\'est pas défini !');
    }

    echo "Recherche de la classe : $class\n";

    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator(COMMON, FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS),
        RecursiveIteratorIterator::SELF_FIRST // 🔥 Permet d'explorer aussi les sous-dossiers
    );

    foreach ($iterator as $fileInfo) {
        echo "Fichier trouvé : " . $fileInfo->getRealPath() . "\n";

        if ($fileInfo->isFile() && preg_match($pattern, $fileInfo->getFilename())) {
            echo "Chargement de " . $fileInfo->getRealPath() . "\n";
            include_once $fileInfo->getRealPath();
            return;
        }
    }

    echo "Classe $class non trouvée.\n";
});

@bazooka07

Copy link
Copy Markdown
Contributor Author

Pour spl_autoload_register() voir commit suivant :
8653f08
J' exploite la clé renvoyée par RecursiveIteratorIterator dans la boucle foreach(). Cela simplifie le taf.
RecursiveIteratorIterator::CHILD_FIRST n'est pas nécessaire (testé avec NGinx sous Linux). Par ailleurs, il devrait figurer comme 2 paramètres à l'appel du constructeur. C'est un mode et pas un flag :
https://www.php.net/manual/fr/recursiveiteratoriterator.construct.php

J'ai repris également makeSiteUrl() qui permet de s'affranchir du nom d'hôte et du port. J'ai Nginx qui écoute le port 8080 en parallèle de Apache qui écoute le port 80.

Je vais faire d'autres essais sous Windows. Apparemment certaines urls ne sont pas générées correctement avec Laragon.

J'ai également déplacé le test de la version de PHP dans common/common.php. Si on déménage 299ko déjà installé sur un autre serveur, ce test sera toujours effectif.

@MaxenceCauderlier

Copy link
Copy Markdown
Collaborator

L'autoload est devenu trop compliqué pour rien.
Pire, il est moins performant sur de multiples répétitions que celui qui fonctionnait d'origine (voir perf preg_match vs compare strings).

Pour la vérification de la version mini de PHP, je ne suis pas pour la déplacer : Il est inutile qu'elle soit appelée à chaque chargement de chaque page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants