Микрофреймворк

d1gi

Новичок
Встретился с таким понятием как микрофреймворк, из примеров есть например Slim м Silex. Вообще идея интересная, хочу спросить кто что думает на эту тему? ;) вообще самый интересный вопрос, это что вообще можно считать «микро» фреймворком т.е. где та самая грань которая будет отделять его от обычного фв ;)

По себе могу сказать, что чувствую можно сделать проще многие вещи, например конфигуррирование, реализацию некоторых паттернов, например DI, упростить синтаксис, например экшены писать без префиксов и суффиксов, а просто как есть :) и т.д.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Открою страшную тайну — DI значительно упрощается выкидыванием его и принятием нормальных соглашений.
А вот экшны писать без префиксов не надо — некоторые ключевые слова не могут быть именем функции или метода.
 

d1gi

Новичок
да, всёже экшены лучше именовать с пре/суф-фиксами...

а можно немного про "принятиее нормальных соглашений"? :)
 

AmdY

Пью пиво
Команда форума
Буквально сегодня обсуждали микрофреймворки с коллегами. У меня так же есть свой собственный опыт использования fat-free -- резолюция - нафик надо. кроме роутинга они не дают ничего такого, чего нет в голом php. да и в голом пыхе это легко поднимается. так что большинство микрофреймворков слишком микро, чтобы о них серьёзно говорить.
 

fixxxer

К.О.
Партнер клуба
нафик надо. кроме роутинга они не дают ничего такого, чего нет в голом php
Вот-вот.

Вот это тогда тоже назовем "микрофреймворком"?

nginx.conf
Код:
server {
    listen 127.0.0.1:80;
    server_name localhost;

    set $_app_root   /tmp/app;
    set $_controller NotFound;
    set $_action     Default;
    set $_args       "";
    root /tmp/static;

    location = / {
        set $_controller Index;
        try_files $uri @php;
    }
    location /users/ {
        location = /users/ {
            set $_controller UserList;
            try_files $uri @php;
        }
        location ~ ^/users/(\d+)/$ {
            set $_controller User;
            set $_args "id=$1";
            try_files $uri @php;
        }
        location ~ ^/users/(\d+)/edit/$ {
            set $_controller User;
            set $_action "Edit";
            set $_args "id=$1";
            try_files $uri @php;
        }
        try_files $uri @php;
    }
    location / {
        try_files $uri @php;
    }
    location @php {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param controller $_controller;
        fastcgi_param action $_action;
        fastcgi_param args $_args;
        fastcgi_param SCRIPT_FILENAME $_app_root/index.php;
        include /usr/local/etc/nginx/fastcgi_params;
    }
}
index.php
PHP:
$controller = isset($_SERVER['controller']) ? $_SERVER['controller'] : 'NotFound';
$action     = isset($_SERVER['action'])     ? $_SERVER['action']     : 'Default';
if (isset($_SERVER['args'])) {
    parse_str($_SERVER['args'], $args);
} else {
    $args = array();
}
$controller_class = $controller . 'Controller';
// add error handling
require_once __DIR__ . '/Controllers/' . $controller_class . '.php';
$Controller = new $controller_class;
$Controller->{"action${action}"}($args);
 

Духовность™

Продвинутый новичок
вообще самый интересный вопрос, это что вообще можно считать «микро» фреймворком т.е. где та самая грань которая будет отделять его от обычного фв
Грань такая - мф должен уметь работать с текстом. Без картинок, экселей и пр. Иметь хорошо релизоаннык CRUD и структуру, позволяющую делать быструю и эффективную реализацию модулей-контроллеров-моделей, проверку ошибок и запись всего в БД. Грубо говоря, мф должен позволять делать быстро гостевую книгу и админку к ней)
 

Redjik

Джедай-мастер
Грань такая - мф должен уметь работать с текстом. Без картинок, экселей и пр. Иметь хорошо релизоаннык CRUD и структуру, позволяющую делать быструю и эффективную реализацию модулей-контроллеров-моделей, проверку ошибок и запись всего в БД. Грубо говоря, мф должен позволять делать быстро гостевую книгу и админку к ней)
возьми класс роутинга и active record с симфони - вот тебе и микрофреймворк =)
 

AmdY

Пью пиво
Команда форума
Иван Redjik Матвеев
active record с симфони??? там же доктрина, которая никак не микро
 

Redjik

Джедай-мастер
AmdY
ах точно ведь, ну простенькую crud обертку для pdo можно тогда написать.
 

DYPA

Настоящая dypa (c)
а что по вашему должен уметь делать микрофреймворк?

slim, azuki и fat-free 2 по мне не фреймворки - а продвинутые роутеры ;) вообще если смотреть историю их возникновения - то первый который я виде - это ядро frogcms ;) поэтому микро в моем понимании - не больше 10 кб и не больше 10 классов ;)
 

Absinthe

жожо
а что по вашему должен уметь делать микрофреймворк?
То же, что и обычный, по сути, - MVC. Ведь в обычном же никто не заставляет использовать ORM или всякие формы.
Для чего нужны микрофреймворки - не понимаю. Если нужна производительность - это не узкое место. Если нужен размер - я с трудом представляю такое требование.
 
Сверху