Created
February 21, 2019 08:34
-
-
Save Rheola/f344e9ef5c74e8229cb5606401ace1f6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Created by PhpStorm. | |
* User: rheola | |
* Date: 08.10.2018 | |
* Time: 12:22 | |
*/ | |
/** | |
* Пример реализации автозагрузика для проекта . | |
* | |
* После регистрации этого автозагрузчика с помощью SPL, следующая строка должна загрузить класс | |
* \Foo\Bar\Baz\Qux | |
* из файла /path/to/project/src/Baz/Qux.php : | |
* | |
* new \Foo\Bar\Baz\Qux; | |
* | |
* @param string $class | |
* @return void | |
* Полное имя класса | |
*/ | |
spl_autoload_register(function ($class) | |
{ | |
// Базовый префикс ространства имен для проекта | |
$prefix = 'Dss'; | |
// базовый каталог для префикса пространства имен | |
$base_dir = __DIR__; | |
// класс использует префикс пространства имен? | |
$len = strlen($prefix); | |
if (strncmp($prefix, $class, $len) !== 0) { | |
// нет, переходим к следующему зарегистрированному автозагрузчику | |
return; | |
} | |
//получить относительное имя класса | |
$relative_class = substr($class, $len); | |
// заменить префикс пространства имен базовым каталогом, | |
// заменить разделители пространств имен разделителями | |
// каталогов в относительном имени класса , | |
// добавить расширение . php | |
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php'; | |
// если файл существует, загрузить его | |
if (file_exists($file)) { | |
require $file; | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment