Я пытаюсь разбить папку lib в несколько папок. Я думал, что префиксы в автозагрузчике должны быть наиболее сбалансированным методом между написанием кода и производительностью. Проблема в том, что мне нужно переименовать каждый файл и каждое имя класса внутри, чтобы соответствовать имени с включенным префиксом.
До:
-app
----lib
-------Class1.php
-------Class2.php
-------Class3.php
После того, как он должен работать:
-app
----lib
--------general
-----------General_Class1.php
-----------General_Class2.php
--------app
-----------App_Class3.php
После того, как я хочу, чтобы это было:
-app
----lib
--------general
-----------Class1.php
-----------Class2.php
--------app
-----------Class3.php
Прямо сейчас, чтобы зарегистрировать эти префиксы, я использую следующий код:
// Register some prefixes
$loader->registerPrefixes(
array(
"App_" => $config->application->libraryDir . "app/",
"General_" => $config->application->libraryDir . "general/",
)
);
$loader->register();
$server = new App_Class3();
echo $server->testMethod('test');
Можно ли вызвать определенные классы, например, App_Class3, но без переименования файла и имени класса внутри (используя метод префиксов или аналогичный)?
Фаллонный погрузчик может это сделать. Это объясняется в документах Phalcon.
Вы просто регистрируете префиксы в загрузчике, как и пространства имен.
<?php
use Phalcon\Loader;
// Creates the autoloader
$loader = new Loader();
// Register some prefixes
$loader->registerPrefixes(
array(
"Example_Base" => "vendor/example/base/",
"Example_Adapter" => "vendor/example/adapter/"
));