Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Autoładowanie klas za pomocą PSR-4

$
0
0

W głównym katalogu projektu posiadam klasę src/File.php, która obsługuje pliki. Niestety w tym pliku zdefiniowałem także klasę wyjątku, którą chcę teraz przenieść do osobnego pliku, dodatkowo umieszczając go w podkatalogu Exception/. Pierwotny wygląd pliku src/File.php jest następujący:

<?php

namespace Nazwisko;

class File
{
 ...
}

class FileException extends \Exception
{
}

Po rozbiciu na dwa osobne pliki i umieszczeniu ich w tym samym katalogu src/ wszystko jest w porządku. Plik src/File.php ma postać:

<?php

namespace Nazwisko;

use Nazwisko\FileException;

class File
{
 ...
}

zaś src/FileException.php:

<?php

namespace Nazwisko;

class FileException extends \Exception
{
}

i podkreślam raz jeszcze, że ten kod działa poprawnie. Gdy jednak przeniosę plik src/FileException.php do lokalizacji src/Exception/FileException.php i zmodyfikuję oba pliki w następujący sposób:

<?php

namespace Nazwisko;

use Nazwisko\Exception\FileException;

class File
{
 ...
}
<?php

namespace Nazwisko;
//namespace Nazwisko\Exception; // również nie działa

class FileException extends \Exception
{
}

to kod nie działa, wypisując komunikat, że klasa nie została znaleziona. W pliku composer.json mam następujące powiązanie:

"autoload": {"psr-4": {"Nazwisko\\": "src/"
        }
    }

 


Viewing all articles
Browse latest Browse all 21942