обплюйте фреймворк

HraKK

Мудак
Команда форума
обплюйте фреймворк

Конечно, фреймворком, ЭТО назвать я бы не решился, но что есть. Yадо для проекта биллинга, многое еще в набросках, меняется, дорабатывается, живет в общем своей жизнью. Хотелось бы, чтоб на этой стадии было бы обплевана концепция/реализация, может у кого-то будут хорошие идеи - поделится.

Ну и конечно, специально для моих фанов, чтоб было с чего поржать и злорадно ухмыляться: "строит из себя такого крутого, а сам писать не умеет". Я не против, всегда рад кому-то приятно сделать. (без иронии, я программировать не умею)

в архиве:
Billing - реализация зачаточная аппликейшена биллинг( скорее пример апликейшена под этот фреймворк)
Core - сама папка ядра фреймворка
public - и так ясно, лежит индексный файл с помощью которого надо запускать апликейшен
Modules - модули, пока там на зачаточном уровне реализован модуль Page для наглядности
tests - PHPUnit тесты фреймовка. tests/Core/Index.php - можно изменить пути с моих и запускать через веб тесты.

http://correct.com.ua/html/billing.tar
http://correct.com.ua/html/billing.sql

upd. перезалил, забыл после последних изменений по тестам прогнать
 

AmdY

Пью пиво
Команда форума
Fatal error: Uncaught exception 'Core_Loader_Exception' with message 'Not exists file for class Billing_Controller_Front'
ни работает :(, класса нет в архиве. но общий смысл понятен:
здорово, красиво, оопшно, но это не тот код, который было бы интересно увидеть :( мне. ИМХО, код гонится за правильностью, а не за удобством.
 

HraKK

Мудак
Команда форума
Да, что-то свн глюканул и не добавил этот файл в экспорт, перезалил - проверил, все работает.

AmdY
За правильностью ему очень далеко, скажи пожалуйста, что у тебя вызвало недоумение/раздражение/непонятность/неудобство в коде?
 

Single

пилот капсулы
Может стоит в архив положить какой то ридми с описанием процесс запуска твоего FW с нуля? Ради интереса хотел бы попробовать повесить небольшой промо проектик на этот фраймворк и посмотреть на него в действии.
 

AmdY

Пью пиво
Команда форума
HraKK то что ты выложил вызывает только неудобство, проще писать на сыром php, нежели так, с кучей стрелочек, без автокомплита. добавь phpdoc.
нет критически важных частей для работы с формами и списками: валидаторы, фильтры, пэйджинг. пока слишком мало, чтобы судить.
 

HraKK

Мудак
Команда форума
без автокомплита. добавь phpdoc.
Добавлю только на интерфейсы.

нет критически важных частей для работы с формами и списками: валидаторы, фильтры, пэйджинг. пока слишком мало, чтобы судить.
Мне бы твои проблемы))

Я сразу сказал, что это еще не фреймворк. А работа с формами и списками - никогда не признавал, особо, не знаю почему, наверно потому что это в мох приложениях такой ничтожный процент, что нивелируется.

-~{}~ 13.03.10 11:49:

Single
Сделаю. Но я бы не стал на него ничего вешать, тут же не цмс, нету даже добавления страниц)
 

HraKK

Мудак
Команда форума
Перезалил с PHPDoc интерфейсов, теперь автокомплит работает.

Документировать код не считаю нужным, капитаном очевидности работать не хочу, код читается сам, благо у меня нету методов на 100+ строк и есть тесты которые все расскажут о коде.

tf
=))) я могу))
 

Zh0rzh

Новичок
Сложно смотреть в кучу кода без документации.

Навскидку что заметил:
- Смесь из табов и пробелов в качестве отступов
- Единообразность наименования
PHP:
const anchorDelimiter = '#';
const REGEXP = 2;
const PatternOptional = '?';

protected $Adapter;
protected $table;
protected $prefix;
Какой стандарт вообще используется? (Похоже на Pear, но есть модификации)
 

HraKK

Мудак
Команда форума
Смесь табов - заменю регуляркой у меня проблемы с виндой 7 - не запоминает настройки IDE. а по умолчанию там таб.

Стандарт, наш корпоративный старый.

PHP:
protected $Adapter;
protected $table;
С большой буквы пишутся инстансы.

Сложно смотреть в кучу кода без документации.
Согласен, но не так уж и сложно, главное пройтись 1 раз по стеку как запускается приложение.
 

cDLEON

Онанист РНРСlub
Catchable fatal error: Method Core_Permission_Acl_Resource::__toString() must return a string value in C:\work\eclipse\billing\Core\Permission\Acl\Model\Permission.php on line 9
 

HraKK

Мудак
Команда форума
фаг))) а я еще думаю сегодня с утра с просоня, нафиг я там (string) а не (int), вот и решил исправить. Вот что значит не покрыто тестами(

Исправил, перезалил.
 

silent9

Новичок
фреймворк никакой, документации нет, и не за чем было с ним phpunit паковать, у некоторых трафик, а он жрет 99% от всего архива
 

HraKK

Мудак
Команда форума
silent9
Мне было очень важно выслушать твое, крайне информативное и аргументированное мнение, а теперь иди флуди в другое место, договорились?
 

cDLEON

Онанист РНРСlub
HraKK
Покопался в коде....
На что притендует этот фреймворк?
Кроме интересной идеи
PHP:
Core_Application::setInstance( new Billing_Application( array( 'TemplatePath' => '../Billing/Template/' )
Ни чего примечательного в нём не увидел.....
 

HraKK

Мудак
Команда форума
Там есть еще много замечательных идей если покопаться :) С теми же роутерами, виджетами, рендером.

На что претендует? Ни-на-что.
Кроме, как на удобный, быстрый, более менее правильный фреймворк для повседневного юзания. Хорошо расширяемый или кастомизируемый( если заметил, все классы можно подменить, оперирую только с интерфейсами, нету зависимостей)

Фреймворк не есть самоцелью.
 

boombick

boombick.org
Кроме, как на удобный, быстрый, более менее правильный фреймворк для повседневного юзания. Хорошо расширяемый или кастомизируемый
Ну от скромности ты не умрешь :)
 

DYPA

Настоящая dypa (c)
нафига? :confused:
PHP:
throw new Core_Engine_Exception( 'Http engine require template' );
"все классы можно подменить" - очень просто?
PHP:
require_once( dirname( __FILE__ ) . '/../../Core/Loader/Default.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Collection.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Loader.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Collection.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Settings/Exception.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Settings.php' );
обилие set*/get* методов напрягает - магия уже давно доступна всем волшебникам
достигшим 5го уровня

а где не нужно юзается магия
PHP:
class Core_Collection implements ArrayAccess, Iterator, Serializable, Countable
переписывается на extends ArrayObject + function __construct(array $Array = array(), $Flags = ArrayObject::ARRAY_AS_PROPS)

дальше стало скучно...
 

HraKK

Мудак
Команда форума
нафига? :confused:

throw new Core_Engine_Exception( 'Http engine require template' );
а как ему выводить?

"все классы можно подменить" - очень просто?

require_once( dirname( __FILE__ ) . '/../../Core/Loader/Default.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Collection.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Loader.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Collection.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Settings/Exception.php' );
require_once( dirname( __FILE__ ) . '/../../Core/Settings.php' );
И? как это противоречит моему заявлению?


обилие set*/get* методов напрягает - магия уже давно доступна всем волшебникам
достигшим 5го уровня
конкретнее.


class Core_Collection implements ArrayAccess, Iterator, Serializable, Countable

переписывается на extends ArrayObject + function __construct(array $Array = array(), $Flags = ArrayObject::ARRAY_AS_PROPS)
Не переписывается. Читаем тут.

Еще что-то?
 
Сверху