Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
global $MySQLi, $mcrypt; required_verions.php, ещё одна переменная $fs используется при установке, не думаю, что вас это должно сильно волноватьда, и я очень рад, что мне не придется поддерживать проекты на CleverStyle CMS
cs\custom вместо cs.custom.php, тогда автозагрузчик даже не сработаетДавно удивляюсь, как, бывает, усложняют разработку современные фреймворк…… А всё вот почему: их цель — упростить и ускорить разраа так же каким-то образом стандартизировать и структурировать проект. Но, по моему скромному субъективному мнению… ..., с первой половиной порой получается прямо противоположный эффект
Simplest block
Steps to create the simplest block:
- Create block file in components/modules with name block.{block_name_here}.php
- Add some HTML content or PHP code with direct output through echo, print(), etc.
- Go to Administration >> Components >> Blocks
- Click Add block
- Select created block in Block type, specify block title, click Save
- Drag block to desired place, click Save
- Block with content will appear on selected place of web-site
- That's it! You have created block for CleverStyle CMS
Go to Administration >> Components >> Blocks
prepare.php. Допустим вы обновляете ядро до 0.9, где ломаете какую ни будь не понравившуюся или ошибочную архитектурную особенность. Что делать в старых проектах, которые крутятся на модулях от 0.8, к примеру? Обновлять все prepare.php файлы?class MyModule extends \base\Module? Таким образом можно запускать модуль в совершенно другой среде, сделав собственный \base\Module?trigger_error лучше, чем Exception?Почему не сделать модуль, обернуть всю информацию, которая требуется для запуска модуля в class MyModule extends \base\Module? Таким образом можно запускать модуль в совершенно другой среде, сделав собственный \base\Module?
\base\Module если всё нужное для запуска уже есть в ядре, и не нужно ничего наследовать? Либо я не понял, о чём речь.Ну и чем же trigger_error лучше, чем Exception?
И это мы только начали…
Потому что это то, чем страдают фреймворки — избыточность.
Это разные вещи.
Exception, а генерируют ошбики trigger_error? Что мне делать, если я вдруг захотел перехватить ошибку и обработать по-своему?vendors, так и к ядру она имеет минимальное отношение, тем более что директория то vendor существует. _require_once(CLASSES."/$class[namespace]/$class[name].php", false) ||
_require_once(TRAITS."/$class[namespace]/$class[name].php", false) ||
_require_once(ENGINES."/$class[namespace]/$class[name].php", false) ||
(
mb_strpos($class['namespace'], "modules/") === 0 && _require_once(MODULES."/../$class[namespace]/$class[name].php", false)
) ||
(
mb_strpos($class['namespace'], "plugins/") === 0 && _require_once(PLUGINS."/../$class[namespace]/$class[name].php", false)
);
божественный класс User
Что мне делать, если я вдруг захотел перехватить ошибку и обработать по-своему?
Почему везде синглтоны?
Core/classes директория ядра? Почему там валяется PHPMailer? Ведь мало того, что это сторонняя библиотека и ее лучше положить в vendors, так и к ядру она имеет минимальное отношение, тем более что директория то vendor существует.
Потом вы практически везде предлагаете разработчикам поиграть в шарады. Ну епты, что это означает?
$plugin = new \plugins\MyPlugin();set_error_handler(function($errno) {
if ($errno === 1024) { // Окей вроде бы я поймал нужный код ошибки от класса MySuperClass
// А как же мне получить доступ к инстансу класса откуда выпала ошибка?
// А вдруг нужно еще какая то дополнительная информация?
// А вдруг мне нужно еще что то с классом сделать?
}
});
$db = new Db();
try {
$db->connect('192.168.0.1');
} catch (DbException $e) {
if ($e->getCode() === 1) { // Сервер БД не отвечает
$db->connect('192.168.0.2');
}
}
попробовать вызвать альтернативное подключение
false из $db->q('SELECT ...');, а для отладки можно и кастомизировать класс работы с БД, и в логи посмотреть.Либо я не понял, о чём речь.
namespace modules;
class MyModule extends \base\Module {
public $name = 'My Module Example';
public $minCoreVersion = 10;
public $maxCoreVersion = 20;
public function requires() { return array('Mailer', 'CustomModule'); }
public function controllers() { return array('PageController', 'SettingController'); }
public function install() { ... }
public function uninstall() { ... }
}
\base\Module, и предоставить два модуля Mailer, CustomModule реализующие нужный кусок API для работы модуля. То есть грубо гвооря можно запустить модуль в режиме совместимости, сэмулировав для него подходящую среду.\base\Module и использовал его в CleverStyle CMS?Мне кажется, такое реиспользование в даном случае маловероятно, так как в качестве зависимости нужно будет указать все части ядра.
Пример разработки простого блога на CleverStyle CMS