Форум → Программирование → Пыхнуть хотите? → Готовые решения → PHP фреймворк by Soulgarden
PHP фреймворк by Soulgarden
Страницы: ← Предыдущая страница • Следующая страница →
-
-
15 ноября 2010 г. 19:17, спустя 2 дня 20 часов 21 минуту
soulgarden, http://www.phpactiverecord.org/ вот посмотри, охуенни вещь :)Спустя 65 сек.бля, не туда -
18 ноября 2010 г. 0:08, спустя 2 дня 4 часа 50 минут
итак, начну нумеровать версии, не помню, какая была прошлой. пусть будет 0.5
выкладываю сюда не столько для обзора, сколько в качестве бэкапа, я люблю терять данные.
изменения:
1) реализованы библиотека cookies и библиотека сессий
2) усовершенствован класс чтения конфигов, теперь для каждого типа конфига своя библиотека
3) немного изменен и переработан порядок инициализации фреймворка
в следующем "коммите" будут более полезные и интересные вещи -
18 ноября 2010 г. 0:15, спустя 7 минут 29 секунд
Появляется ощущение, что PHP это фреймворк для создания фреймворков =) -
18 ноября 2010 г. 0:16, спустя 1 минуту 1 секунду
Появляется ощущение, что PHP это фреймворк для создания фреймворков =)
Хорошо сказано. А почему такое ощущение? -
18 ноября 2010 г. 0:33, спустя 16 минут 41 секунду
Появляется ощущение, что PHP это фреймворк для создания фреймворков =)
Хорошо сказано. А почему такое ощущение?
аа, не правильно прочитал с первого раза. -
18 ноября 2010 г. 0:54, спустя 21 минуту 28 секунд
soulgarden, не хочу ни коим образом обидеть/наехать и т.п. и т.д. :)
1) public function __construct() {} в контроллере, зачем?
2) if(!defined('APPATH')) header("HTTP/1.0 404 Not Found"); это должно быть ядре, никак не в контроллере
3) Зачем ты понапихал 2 пункт везде? чтоб запретить доступ к директориям клади в них .хтаксесс "deny from all" для нгинкса хз как
4) Слишком дохуя условий в формах, обдумай логику
5)
$application_folder = 'application';
$system_folder = 'system';
//————————————-
$docroot = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR;
define('APPATH', $docroot.$application_folder.'/', true);
define('SYSPATH', $docroot.$system_folder.'/', true);
Сокращается до:
define('DS', DIRECTORY_SEPARATOR);
define('APPATH', dirname(__FILE__).DS.'application');
define('SYSPATH', APP_DIR.'core'.DS.'system');
Ну это так, ИМХО)
6) Весь bootstrap.php думаю надо вынести в файл конфигурации, в любом удобном тебе виде xml/ini/php array/yaml etc.
7) Почему папка rsc так называется не понял, совершенно не подходит к содержанию :)
8) Все исключения вынеси в один файл, слишком жирно одному классу исключения иметь свой файл :)
9) Тоже самое и с интерфейсами
10) O_o
class NotFoundHttpException extends Exception {
public function __construct($message = null) {
header("HTTP/1.0 404 Not Found");
}
}
заголовок в инсключении? Эмм
_____________________________
В целом мне понравился, сыро но перспективно :) -
18 ноября 2010 г. 1:05, спустя 10 минут 15 секунд
Скачал, проект. Стиль проверять не буду, это может сделать - http://pear.php.net/package/PHP_CodeSniffer/, открываю index.php:
1) Вижу закрывающий тэг ?>, оно там не надо
2) Вижу 3 require_once, а должен быть 1, все остальное на autoload
3) error_reporting(E_ALL) и подобное позволь тогда настроить в конфигурации
4) Core::init() - статический, настораживает, но пока не знаю почему идем дальше
открываю system/Loader.php
1) Вижу if(!defined('SYSPATH')) header("HTTP/1.0 404 Not Found"), понимаю, что бред проблему доступа и т.п. решай не здесь
2) Опять вижу статический класс, да еще и костыль, если я правильно понял - if (self::$is_inited == true) return;
3) …
Все схарило.
Вобщем, сделаешь потом апп и покажешь, как оно у тебя все создается в два нажатия кн. мыши ;)
Спустя 32 сек.А где unit тесты? -
18 ноября 2010 г. 1:17, спустя 12 минут 49 секунд
soulgarden, не хочу ни коим образом обидеть/наехать и т.п. и т.д. :)
1) public function __construct() {} в контроллере, зачем?
2) if(!defined('APPATH')) header("HTTP/1.0 404 Not Found"); это должно быть ядре, никак не в контроллере
3) Зачем ты понапихал 2 пункт везде? чтоб запретить доступ к директориям клади в них .хтаксесс "deny from all" для нгинкса хз как
4) Слишком дохуя условий в формах, обдумай логику
5)
$application_folder = 'application';
$system_folder = 'system';
//————————————-
$docroot = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR;
define('APPATH', $docroot.$application_folder.'/', true);
define('SYSPATH', $docroot.$system_folder.'/', true);
Сокращается до:
define('DS', DIRECTORY_SEPARATOR);
define('APPATH', dirname(__FILE__).DS.'application');
define('SYSPATH', APP_DIR.'core'.DS.'system');
Ну это так, ИМХО)
6) Весь bootstrap.php думаю надо вынести в файл конфигурации, в любом удобном тебе виде xml/ini/php array/yaml etc.
7) Почему папка rsc так называется не понял, совершенно не подходит к содержанию :)
8) Все исключения вынеси в один файл, слишком жирно одному классу исключения иметь свой файл :)
9) Тоже самое и с интерфейсами
10) O_o
class NotFoundHttpException extends Exception {
public function __construct($message = null) {
header("HTTP/1.0 404 Not Found");
}
}
заголовок в инсключении? Эмм
_____________________________
В целом мне понравился, сыро но перспективно :)
1) пока он не нужен, но в реальном приложении применение находило, вроде добывал из базы настройки сайта и еще что-то
2) и 3) я видел такое во многих цмс, фреймворках, тоже думал, в чем смысл. ну и как-то сам стал делать так :)
4) эту библиотеку я буду переписывать, на нее можно не смотреть пока
5) будет не очень удобно и кошерно задавать путь к папкам для system и application. сейчас отдельные переменные, а придется менять в коде
6) почти у любого фреймворка современного есть бутстрап. я же в должен проинициализировать некоторые либы, в конфигах только статическая информация, а если я прямо в бутстрапе буду инфу из конфигов доставать, то бутстрап будет перегружен и неудобне для настройки
7) пока папка просто висит без дела, rsc resources
8) и 9) про это пишут обратное, причем хорошо аргументируютСпустя 57 сек.а чем тебе заголовок не нравится? это же 404 -
18 ноября 2010 г. 1:18, спустя 4 секунды
Benchmarking soul.test (be patient)
Finished 2731 requests
Server Software: Apache/2.2.4
Server Hostname: soul.test
Server Port: 80
Document Path: /
Document Length: 12 bytes
Concurrency Level: 5
Time taken for tests: 30.5716 seconds
Complete requests: 2731
Failed requests: 0
Write errors: 0
Total transferred: 658412 bytes
HTML transferred: 32784 bytes
Requests per second: 91.02 [#/sec] (mean)
Time per request: 54.935 [ms] (mean)
Time per request: 10.987 [ms] (mean, across all concurrent requests)
Transfer rate: 21.40 [Kbytes/sec] received
ab -t 30 -c 5 http://soul.test/
=/ -
18 ноября 2010 г. 1:25, спустя 7 минут 54 секунды
Скачал, проект. Стиль проверять не буду, это может сделать - http://pear.php.net/package/PHP_CodeSniffer/, открываю index.php:
1) Вижу закрывающий тэг ?>, оно там не надо
2) Вижу 3 require_once, а должен быть 1, все остальное на autoload
3) error_reporting(E_ALL) и подобное позволь тогда настроить в конфигурации
4) Core::init() - статический, настораживает, но пока не знаю почему идем дальше
открываю system/Loader.php
1) Вижу if(!defined('SYSPATH')) header("HTTP/1.0 404 Not Found"), понимаю, что бред проблему доступа и т.п. решай не здесь
2) Опять вижу статический класс, да еще и костыль, если я правильно понял - if (self::$is_inited == true) return;
3) …
Все схарило.
Вобщем, сделаешь потом апп и покажешь, как оно у тебя все создается в два нажатия кн. мыши ;)
Спустя 32 сек.А где unit тесты?
0) посмотрим, что это за зверь
1) выше на это отвечал, уберу это.
2) статические классы зачастую удобно использовать, он сокращают кучу кода, типа $ololo = new xyilo; $ololo->doIt(); ну а условие это следствие того, что метод статический. Я просто не вижу здесь минусов статического метода. Ты можешь перечислитьСпустя 36 сек.юнит тесты будут позже, когда я воплощу все основные идеи, перед выходом версии 1.0Спустя 136 сек.
Benchmarking soul.test (be patient)
Finished 2731 requests
Server Software: Apache/2.2.4
Server Hostname: soul.test
Server Port: 80
Document Path: /
Document Length: 12 bytes
Concurrency Level: 5
Time taken for tests: 30.5716 seconds
Complete requests: 2731
Failed requests: 0
Write errors: 0
Total transferred: 658412 bytes
HTML transferred: 32784 bytes
Requests per second: 91.02 [#/sec] (mean)
Time per request: 54.935 [ms] (mean)
Time per request: 10.987 [ms] (mean, across all concurrent requests)
Transfer rate: 21.40 [Kbytes/sec] received
ab -t 30 -c 5 http://soul.test/
=/
я не знаю, что сказать. у меня работает шустро + тут ни ресурсозатратных подключений нет, ни соединений с бд -
18 ноября 2010 г. 1:32, спустя 6 минут 32 секунды
soulgarden, я убрал всю шаблонизацию из контроллера и тупо написал echo 'Hello World!';
Для сравнения:
Benchmarking yii (be patient)
Completed 5000 requests
Completed 10000 requests
Finished 12126 requests
Server Software: Apache/2.2.4
Server Hostname: yii
Server Port: 80
Document Path: /demos/helloworld/
Document Length: 33 bytes
Concurrency Level: 5
Time taken for tests: 30.2716 seconds
Complete requests: 12126
Failed requests: 9586
(Connect: 0, Length: 9586, Exceptions: 0)
Write errors: 0
Total transferred: 3271116 bytes
HTML transferred: 409144 bytes
Requests per second: 404.16 [#/sec] (mean)
Time per request: 12.371 [ms] (mean)
Time per request: 2.474 [ms] (mean, across all concurrent requests)
Transfer rate: 106.46 [Kbytes/sec] received
Комп i5 750 2.6 GHz, 4Gb DDR3 -
18 ноября 2010 г. 1:34, спустя 1 минуту 41 секунду
rider-sx, за шаблонизацию отвечает библиотека phpdude, может быть сейчас включена force перекомпиляция - я пока шаблонизатором не занимался, у меня в планах переработать его. так что ничего страшногоСпустя 70 сек.Вообщем, всем спасибо за критику! Я ответил на каждый ваш пункт, пишите, если есть что возразить, я все учту :) -
18 ноября 2010 г. 1:56, спустя 22 минуты 33 секунды
rider-sx, за шаблонизацию отвечает библиотека phpdude, может быть сейчас включена force перекомпиляция - я пока шаблонизатором не занимался, у меня в планах переработать его. так что ничего страшного
Я знаю, имелось ввиду что я убрал из контроллера вызов шаблонизатора и его использование :) Дабы сравнить быстродействие с тем же уии -
18 ноября 2010 г. 8:26, спустя 6 часов 29 минут 24 секунды
rider-sx, за шаблонизацию отвечает библиотека phpdude, может быть сейчас включена force перекомпиляция - я пока шаблонизатором не занимался, у меня в планах переработать его. так что ничего страшного
Я знаю, имелось ввиду что я убрал из контроллера вызов шаблонизатора и его использование :) Дабы сравнить быстродействие с тем же уии
я в шоке. может в yii работает кеширование роутов/конфигов/тд, а у меня кеширования пока нет вообще?
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!