czy w PHP jest coś takiego jak get_declared_use_namespaces ??

0

Chciałbym napisać autolader klas który obsługuje

use CRM\model;

$u = new user();

fajnie jak by autoloader miał po prostu listę użytych "use ..." ;] ale nie znajduje takiej funkcji :/

0

use to tylko lukier składniowy - autoloader otrzymuje pełną nazwę klasy, więc nie ma żadnej potrzeby specjalnego przetwarzania useów.

Nie uważasz, że prościej i szybciej byłoby to sprawdzić na własną rękę (pisząc autoloader) niż tworzyć post na forum? ;-p

Btw, jeśli chcesz podejść do tego profesjonalnie, nie baw się we własne autoloadery, tylko skorzytaj z tego generowanego przez Composera.

0

niestety dostaję w autoloaderze "user" a nie '\CRM\model\user' więc autoloader nie wie gdzie szukać tej klasy

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);




function autoload($class) {    
    echo "potrzzebuje klasy: ".$class." <br>";
            
    //$prefix = 'Foo\\Bar\\';
    $prefix = 'martianCRM';
        
    if (substr($class, 0, strlen($prefix))==$prefix){
        $class= substr($class, strlen($prefix));
    }
    
    $base_dir = __DIR__ . '/src/';
    echo $base_dir."<br>";

    $len = strlen($prefix);   
    $relative_class = substr($class, $len);
    
    $filename = $base_dir . str_replace("\\", '/', $class) . ".php";
    echo $filename."<br>";

    if (file_exists($filename)) {
        include($filename);
        if (class_exists($class)) {
            echo  "jest <br>";
            
            // @@@@@ jakieś zabezpiueczenia czy coś
            include $filename;
            if (class_exists($class)) {
                return TRUE;
            }
        }
    }    
    
   echo "NIE MA <BR>" ;
   return false; // Zwróć "true", informując, że klasa została znaleziona.    
}


spl_autoload_register('autoload');

use \martianCRM\model;

$b = new user();

chcę załapać podstawy żeby móc używać z głową autoloadera z composera

1 użytkowników online, w tym zalogowanych: 0, gości: 1