1. Просто если мы определяем какой метод вызывать, то теряется сам смысл рефлексии. Она ведь нужна только потому что из текущего класса все is_callable. А так это смотрится не как пример построения контроллера, а как слегка надуманный пример использования рефлексии, за что спасибо.
2. Спасибо. Как-то упустил это расширение. Кстати, в вашем случае, его может заменить и своим классом )
3. Так и я не про acl говорю. ACL, по сути, не навязывает где должна проходить проверка прав доступа. При использовании вашего метода, где имеено и на каком этапе вы будете определять какие нужно инстанцировать как User* а какие нет?
При таком контроллере + огрничении доступа воображение рисует index.php вида:
swich($module) {
case 'blog':
if (User::isAuthenticated())
$module = new UserBlogModule();
else
$module = new BlogModule();
}
}
if ($module) {
$module->buildPage('action');
}
1. А инстанцирование нужного модуля вы на контроллер не возлагаете? Тогда вы не избавляетесь от swich, а просто уменьшаете его размер (нужно будет выбирать только модуль). Почему не вынести контроллер в отдельный класс и не проверять точно так же class_exists и проверять публичность меода через is_callable?
2. А где исходник самого ReflectionMethod? Мне пока не совсем понятно зачем он вообще нужен.
3.
>> if (проверка авторизации)
>> $module=new UserExampleModule();
>> else
>> $module=new ExampleModule();
Совсем уж как-то дико выглядит. Намного проще/понятней закрывать доступ к отдельным функциям или модулям. Если же необходимо разное поведение для (не)зарегестрированного пользователя, то проверять авторизацию уже в самом модуле и из одного и того же public метода вызывать разные private/protected
А потом в проект прийдет новый разработчик и вынужден будет учить фрейверк, о котором 100% никогда раньше не слышал и по которому нет нормальной документации
Использую не только во избежание конфликтов, но и для разделения функций инициализации скрипта. Сейчас пользуюсь схемой namespace на страницу + один для общих функций.
Все это сложено в один файл + на каждой странице iniline скрипт содержания active_namespace = "Home". Т.е. по DOMReady будет вызвана Home.init()
> Мы рассчитываем отобрать 100—200 номинантов.
Т.е. всем желающим стоит спешить и по набору некоторого количества номинантов (200?) прием заявок будет закрыт?
include в цикле 0.0004260
include_once в цикле 0.000082688331
eval (получение кода до цикла) 0.0002123594
мой_вариант 0.0000336432456
Мой вариант однажды подключение файла и потом вызов описанной в нем функции. Естественно, его минус это необходимость присваивать уникальные имена функциям.
Т.е. eval таки медленнее. Ну а остальные его плюсы для меня очень сомнительны (при хранении представления в БД, конечно, без него не обойтись, но это очень редкий случай)
> + Возможность кеширования кода представлений во фреймворке или шаблонизаторе
Совсем уж сомнительный плюс. Вы же не подключаете один и тот же кусок шаблона с одинаковыми параметрами?
Тут от google maps используется только геокодинг, а для этого достаточно отправить запрос. Гуглу как-то все равно, кто его ответ будет обрабатывать javascript или другой язык.
Во-первых, на кавычках экономит не только google, а еще и ya.ru, например.
Во-вторых, давайтие разделять исходники и конечный продукт. Ведь против gzip и минимизированных js вы не возражаете? Так почему бы не минимизировать и html перед выходом в продакшн? Естественно, это имеет смысл только, если у вас очень маленький размер страницы. Вот гугл и яндекс на этом имеют неплохую экономию в процентах.
2. Спасибо. Как-то упустил это расширение. Кстати, в вашем случае, его может заменить и своим классом )
3. Так и я не про acl говорю. ACL, по сути, не навязывает где должна проходить проверка прав доступа. При использовании вашего метода, где имеено и на каком этапе вы будете определять какие нужно инстанцировать как User* а какие нет?
При таком контроллере + огрничении доступа воображение рисует index.php вида:
Немного неудобно, не правда ли?
2. А где исходник самого ReflectionMethod? Мне пока не совсем понятно зачем он вообще нужен.
3.
>> if (проверка авторизации)
>> $module=new UserExampleModule();
>> else
>> $module=new ExampleModule();
Совсем уж как-то дико выглядит. Намного проще/понятней закрывать доступ к отдельным функциям или модулям. Если же необходимо разное поведение для (не)зарегестрированного пользователя, то проверять авторизацию уже в самом модуле и из одного и того же public метода вызывать разные private/protected
Сейчас мои клиенты расколожены в зоне -4GMT.
Определило как Киев, сижу в Харькове.
Возможно все та же проблемма "крупных сетей" (укртелеком).
Все это сложено в один файл + на каждой странице iniline скрипт содержания active_namespace = "Home". Т.е. по DOMReady будет вызвана Home.init()
0 - корректная работа. отсальное код ошибки.
Т.е. всем желающим стоит спешить и по набору некоторого количества номинантов (200?) прием заявок будет закрыт?
2. eval("function test".rand(0, 1111)."() { ?> <html> <?php } ");
не выводит и не возвращает ничего
По поводу последнего мне показалось, что автор имел в виду кеширование уже итогового html
include в цикле 0.0004260
include_once в цикле 0.000082688331
eval (получение кода до цикла) 0.0002123594
мой_вариант 0.0000336432456
Мой вариант однажды подключение файла и потом вызов описанной в нем функции. Естественно, его минус это необходимость присваивать уникальные имена функциям.
Т.е. eval таки медленнее. Ну а остальные его плюсы для меня очень сомнительны (при хранении представления в БД, конечно, без него не обойтись, но это очень редкий случай)
> + Возможность кеширования кода представлений во фреймворке или шаблонизаторе
Совсем уж сомнительный плюс. Вы же не подключаете один и тот же кусок шаблона с одинаковыми параметрами?
Он есть (хотя пока и без официального релиза)-- http://solenko.blogspot.com/
Во-вторых, давайтие разделять исходники и конечный продукт. Ведь против gzip и минимизированных js вы не возражаете? Так почему бы не минимизировать и html перед выходом в продакшн? Естественно, это имеет смысл только, если у вас очень маленький размер страницы. Вот гугл и яндекс на этом имеют неплохую экономию в процентах.