ФорумПрограммированиеПыхнуть хотите?Готовые решения → PHP фреймворк by Soulgarden

PHP фреймворк by Soulgarden

  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 12 ноября 2010 г. 22:56, спустя 1 минуту 1 секунду

    phpdude, а суть та же
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 15 ноября 2010 г. 19:17, спустя 2 дня 20 часов 21 минуту

    soulgarden, http://www.phpactiverecord.org/ вот посмотри, охуенни вещь :)
    Спустя 65 сек.
    бля, не туда
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 0:08, спустя 2 дня 4 часа 50 минут

    итак, начну нумеровать версии, не помню, какая была прошлой. пусть будет 0.5
    выкладываю сюда не столько для обзора, сколько в качестве бэкапа, я люблю терять данные.

    изменения:

    1) реализованы библиотека cookies и библиотека сессий
    2) усовершенствован класс чтения конфигов, теперь для каждого типа конфига своя библиотека
    3) немного изменен и переработан порядок инициализации фреймворка

    в следующем "коммите" будут более полезные и интересные вещи
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 18 ноября 2010 г. 0:15, спустя 7 минут 29 секунд

    Появляется ощущение, что PHP это фреймворк для создания фреймворков =)
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 0:16, спустя 1 минуту 1 секунду


    Появляется ощущение, что PHP это фреймворк для создания фреймворков =)

    Хорошо сказано. А почему такое ощущение?
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 0:33, спустя 16 минут 41 секунду



    Появляется ощущение, что PHP это фреймворк для создания фреймворков =)

    Хорошо сказано. А почему такое ощущение?

    аа, не правильно прочитал с первого раза.
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 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");
       }
    }

    заголовок в инсключении? Эмм
    _____________________________
    В целом мне понравился, сыро но перспективно :)
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 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 тесты?
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 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
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 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/
    =/
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 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/
    =/


    я не знаю, что сказать. у меня работает шустро + тут ни ресурсозатратных подключений нет, ни соединений с бд
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 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
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 1:34, спустя 1 минуту 41 секунду

    rider-sx, за шаблонизацию отвечает библиотека phpdude, может быть сейчас включена force перекомпиляция - я пока шаблонизатором не занимался, у меня в планах переработать его. так что ничего страшного
    Спустя 70 сек.
    Вообщем, всем спасибо за критику! Я ответил на каждый ваш пункт, пишите, если есть что возразить, я все учту :)
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 18 ноября 2010 г. 1:56, спустя 22 минуты 33 секунды

    rider-sx, за шаблонизацию отвечает библиотека phpdude, может быть сейчас включена force перекомпиляция - я пока шаблонизатором не занимался, у меня в планах переработать его. так что ничего страшного

    Я знаю, имелось ввиду что я убрал из контроллера вызов шаблонизатора и его использование :) Дабы сравнить быстродействие с тем же уии
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 18 ноября 2010 г. 8:26, спустя 6 часов 29 минут 24 секунды


    rider-sx, за шаблонизацию отвечает библиотека phpdude, может быть сейчас включена force перекомпиляция - я пока шаблонизатором не занимался, у меня в планах переработать его. так что ничего страшного

    Я знаю, имелось ввиду что я убрал из контроллера вызов шаблонизатора и его использование :) Дабы сравнить быстродействие с тем же уии


    я в шоке. может в yii работает кеширование роутов/конфигов/тд, а у меня кеширования пока нет вообще?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!