Javascript.RU

Голосование: you like it?
Открытый опрос: другие пользователи будут видеть, кто как проголосовал.
Опции опроса
you like it?

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2015, 19:33
Новичок на форуме
Отправить личное сообщение для alexismaster Посмотреть профиль Найти все сообщения от alexismaster
 
Регистрация: 23.07.2015
Сообщений: 4

Nirvana - Мой PHP Фреймворк
Решил собрать старые черновики в кучу и за одно вспомнить PHP т.к. начал его забывать.

Всем кто решит попробовать мою поделку обещаю помощь. Буду рад любой активности на github. Участие в разработке могут принять все желающие. Основное требование: лёгкость и простота. Я не хочу перегружать его всякими парсерами YAML конфигов, кешированием, "публикацией ресурсов". Т.е. всё то с чем я намучался в других фреймворках. Не спорю, мб это всё не так плохо.

Пока не готова даже bata-версия, по этому даю ссылку на ветку develop


Проблемы которые вы можете попытаться помочь мне решить:
- фреймворк не проверен под виндой и на апаче. не уверен что .htaccess кореектный
- не плохо бы настроить vagrant и закоммитить конфиг (уж очень это сейчас популярно)
- ORM очень сырая. чуть позже я попытаюсь доработать её и сделать код более понятным
- нужно прикрутить Composer и настроить автозагрузку. если конечно вообще возможно сделать универсальной автозагрузку для всего что устанавливается через Composer. возможно стоит рассмотреть другие менеджеры зависимости
- CLI..... нужно сделать хотя бы примитивный кодогенератор. за источник вдохновения лучше взять аналог из симфони. ибо там тоже Twig для этого используется как и у меня.
- юнит тесты....


По всем вопросам пишите на alexismaster@lenta.ru
Чуть позже добавлю небольшой "Quick Start" для разработчиков.


+++++++++++++++++++++++++++++
Обещанный Quick Start:


1. Копируем
Код:
git clone https://github.com/alexismaster/nirvana.git
2. Переходим в ветку develop
Код:
git checkout develop
3. Настраиваем DOCUMENT_ROOT на папку public. htaccess уже есть, должен работать, пример конфига nginx в коре репозитория.

4. По умолчанию фреймворк использует конфиг dev.config.php
public/index.php:
Код:
Nirvana\MVC\Application::init(require 'src/config/dev.config.php')->run($debugMode);

5. Теперь о самом конфиге
return array(

	// Настройки подключения к СУБД
	'DB' => array(
		'MYSQL_HOST' => 'localhost',
		'MYSQL_USER' => 'root',
		'MYSQL_PASS' => '13271327',
		'MYSQL_BASE' => 'viliot',
		'TABLE_PREF' => '',             // Префикс таблиц
	),


	// Настройки маршрутизатора
	'ROUTER' => array_merge(

		require('_routes_.php'),

		require(__DIR__ . '/../modules/SampleForumModule/config/_routes_.php'),

		array(
			'orm-update' => array('url' => '/orm-update/', 'controller' => 'Default', 'action' => 'orm'),
		)
	)
);


С базой данных я думаю всё понятно.

Код:
require('_routes_.php'),
это роуты основного приложения

Код:
require(__DIR__ . '/../modules/SampleForumModule/config/_routes_.php'),
это роуты модуля SampleForumModule

Код:
/orm-update/
Страница при переходе на которую происходит обновление БД в соответствии с имеющимися сущностями(моделями)




Сейчас в папке SRC (код приложения) есть несколько контроллеров реализующих простенький бложек с комментариями и заготовка модуля под форум. В дальнейшем я планирую выделить это в отдельную ветку чтобы можно было мержить её по желанию.



++++++++++++++++++++
у проекта появился домен в течении пары недель перевезу всё на виртуалку и дам ссылку

Последний раз редактировалось alexismaster, 24.07.2015 в 11:16.
Ответить с цитированием
  #2 (permalink)  
Старый 23.07.2015, 23:24
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Давай поговорим про автозагрузчик.
Меня всегда убивает когда в автозагрузчике проверяют наличие файла.
Вот скажи зачем, если файла нет я должен увидеть ошибку. А не лазить затем дебажить почему, что то не работает. У тебя же даже не реализовано вывод ошибки об отсутствии файла.
Регулярки там вобще незачем. по коду бегло пробежавшись видно они нравятся сильно.
Сообщение от alexismaster
Основное требование: лёгкость и простота
/**
 * Automatic loader classes
 */
spl_autoload_register(
/**
 * @param string $class
 */
    function ($class) {
        include PATH_ROOT . str_replace('\\', '/', $class . '.php');
    }
);
Ответить с цитированием
  #3 (permalink)  
Старый 24.07.2015, 09:55
Новичок на форуме
Отправить личное сообщение для alexismaster Посмотреть профиль Найти все сообщения от alexismaster
 
Регистрация: 23.07.2015
Сообщений: 4

Сообщение от Poznakomlus
Меня всегда убивает когда в автозагрузчике проверяют наличие файла.
Я по чему то считал что так не будет выводиться путь типа /home/username/.... а будет просто класс нот фоунд. Не хотелось бы чтобы на проде было видно каталог пользователя т.е. его логин, но он всё равно выводится.


Сообщение от Poznakomlus
видно они нравятся сильно.
Абсолютно в дырочку Очень люблю, часто юзаю там где не нужно.

В общем я исправил и сейчас так:

spl_autoload_register(function ($className) {
  $path = str_replace('\\', '/', $className);
  $path = str_replace('Nirvana/', 'framework/', $path);               // Классы фреймворка
  $path = str_replace('SRC/', 'src/', $path);                         // Классы приложения
  $path = preg_replace('/\\/([A-z]+Module)/', '/modules/$1', $path);  // Классы модулей приложения
  $path = $path . '.php';

  require_once $path;
});



https://github.com/alexismaster/nirv...autoloader.php
Ответить с цитированием
  #4 (permalink)  
Старый 24.07.2015, 10:15
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Теперь удалим внимание вот этим строкам
$path = str_replace('Nirvana/', 'framework/', $path);               // Классы фреймворка
  $path = str_replace('SRC/', 'src/', $path);                         // Классы приложения
  $path = preg_replace('/\\/([A-z]+Module)/', '/modules/$1', $path);  // Классы модулей приложения
  $path = $path . '.php';

эти регулярки можно спокойно убрать переписав названия неймспесов
и зачем добавили _once. Класс загруженный единожды, второй раз подключатся не будет
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2015, 10:27
Новичок на форуме
Отправить личное сообщение для alexismaster Посмотреть профиль Найти все сообщения от alexismaster
 
Регистрация: 23.07.2015
Сообщений: 4

Сообщение от Poznakomlus
эти регулярки можно спокойно убрать переписав названия неймспесов
Тоже уже подумал. Мучаюсь с названиями.

думаю папку framework переименовать в Nirvana или неймспейс поменять на framework
и SRC.... мб Application и неймспейс соответствующий
а с модулями как? Application\Module\ForumModule\Controller\IndexCon troller ?
Ответить с цитированием
  #6 (permalink)  
Старый 24.07.2015, 11:45
Новичок на форуме
Отправить личное сообщение для alexismaster Посмотреть профиль Найти все сообщения от alexismaster
 
Регистрация: 23.07.2015
Сообщений: 4

готово
spl_autoload_register(function ($className) {
  require str_replace('\\', '/', $className) . '.php';
});



Сообщение от alexismaster
лёгкость и простота
достигнуты
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется Php программист, Фреймворк Yii2 business32 Работа 1 09.06.2015 12:22
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Сайт на PHP (фреймворк кохана) webapp Работа 3 21.11.2011 21:29
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54
javascript и php (Вопрос) Гауляйтер Общие вопросы Javascript 3 06.05.2009 09:23