Я хотел бы сделать мой первый большой проект в php. Я использую Phalcon PHP, и я создал структуру проекта с помощью Phalcon Developer Tools. Это что-то вроде:
,
├── app
│ ├── cache
│ ├── config
│ │ ├── config.php
│ │ ├── loader.php
│ │ └── services.php
│ ├── controllers
│ ├── migrations
│ ├── models
│ └── views
├── index.html
└── public
├── css
├── files
├── img
├── index.php
├── js
└── temp
Я думаю, что мне понадобятся некоторые глобальные функции и классы. Я хотел бы, например, реализовать функцию dd Laravel для немых переменных и с помощью этой функции, как
dd($value);
где я хочу. Я также хочу создать некоторые глобальные классы, чтобы использовать их статические функции. Например:
User::isLogged()
Как реализовать это в моем проекте? Создать каталог функций или lib или indcude в app /? Это конвенция? Размещать глобальные классы в отдельных папках? Как разделить глобальные функции и классы и зарегистрировать их в стандартном загрузчике Phalcon и сделать это один раз для всего проекта?
Хорошая вещь о Phalcon заключается в том, что у вас есть свобода организовать свой проект так, чтобы он наилучшим образом соответствовал вашей текущей ситуации.
Более общий подход, который я использую в большинстве своих проектов, заключается в регистрации наиболее часто используемых пространств имен в автозагрузчике. В моем случае я использую многомодульную структуру, и это делается в файле Module.php для данного модуля.
Модульный класс:
class Module
{
public function registerAutoloaders($di)
{
$config = $di->getConfig();
$loader = new \Phalcon\Loader();
$namespaces = [
'Frontend\Controllers' => __DIR__ . '/controllers/',
'Frontend\Forms' => __DIR__ . '/forms/',
'Models' => $config->site->path->common . 'models/',
'Helpers' => $config->site->path->common . 'helpers/',
];
$loader->registerNamespaces($namespaces);
$loader->register();
}
}
Помощниками в моем случае являются файлы, которые не являются моделями и служат для чего-то конкретного. Например, у меня есть помощник по файлам, который содержит функции для манипулирования файловой системой. У меня есть помощник для обработки строковых операций, таких как slugalization, latinization и так далее …
У меня также есть папка Lib, в которую я помещаю свои публичные библиотеки, такие как PHPMailer, BrowserDetect, библиотеки ImageProcessing и так далее.
А теперь о глобальных функциях, таких как Laravel’s dd()
, У меня есть небольшой файл, который я включаю в файл начальной загрузки или ваш index.php. Он содержит 1-2 глобальные функции, такие как:
function d($what)
{
echo '<pre>';
print_r($what);
die('</pre>');
}
В моем случае не так много глобальных функций, которые я хочу легко использовать везде, как выше, для отладки. Остальные вещи, которые я положил в файлы Helper, упомянутые выше.
Надеюсь, я помог и был бы рад услышать чужое мнение по этому поводу.
Других решений пока нет …