Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Начало работ. 
:(
    Опции темы
Opik
Дата 27.6.2005, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Думаю уже пара приступать писать FrameWork.
Что должно быть в нем включено?
[offtop]
Раньше обходился без оных, поэтому вопрос может быть некорректным.
[/offtop]

PM MAIL Skype   Вверх
IZ@TOP
Дата 28.6.2005, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Думаю что должна быть базовая библиотека (к примеру Web.php), в ней должен находится класс отвечающий за подключение и настройку всех остальных Framework библиотек, назовем его Web, так же в ней, как мне кажется, должен быть включен класс (от которого наследуется класс Web) обработки и вывода ошибок пользователю.
Далее идут все стандартные наборы библиотек:
  • Работа с базами данных.
  • Работа с XML, XSL.
  • Контролеры пользовательских интерфесов, данных.
  • Библиотека для работы с изображениями.
  • Классы для работы с электронной почтой (отправка там).
Ну и далее что понадобиться. Сейчас не соображу.

Набор получается примерно следующий:

Код
Framework Class Library

Web.php
Web.Data.php
Web.Image.php
Web.Interface.php
Web.Xml.php



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 28.6.2005, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Накидал немного:
web.php
Код

<?php
   class fatalException extends Exception {};

   class Web
   {
        public $load = array();

        function __construct($libs = NULL)
        {
              $this->parseConfig();
              if(is_array($libs))
              {
                    $this->useLib($libs);
              }
        }

        function useLib($libs)
        {
              if(is_array($libs))
              {
                    foreach($libs as $lib)
                    {
                          if(!file_exists('fw.'.$lib.'.php')) throw new fatalException("file not found");
                          include_once('fw.'.$lib.'.php');
                          $this->$lib = new $lib;
                          $this->load[] = $lib;
                    }
              }
              else
              {
                      throw new fatalException("1st parametr type must/should be array"); // Забыл как правильно :))
              }
        }
        
        function parseConfig()
        {

        }  
     
        function __destruct()
        {

        }
   }
?>

test.php (Использование)
Код

<?php
  include('web.php');
  try
  {
       $web = new Web;
       $web->useLib(array('XML', 'Image'));
// или просто    $web = new Web(array('XML', 'Image'));

  } catch (fatalException $e) {
       $out  = 'Can\'t locate file: ' . $e->getMessage() . '<br />';
       $out .= 'Error code: ' . $e->getCode() . '<br />';
       $out .= 'File and line: ' . $e->getFile() . '(' . $e->getLine() . ')<br />';
       $out .= 'Trace: ' . $e->getTraceAsString() . '<br />';
       die($out);
  }
?>

Здесь ещё не включены в работу конфиги...

Это сообщение отредактировал(а) Opik - 28.6.2005, 02:35
PM MAIL Skype   Вверх
IZ@TOP
Дата 28.6.2005, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Несколько замечаний:

1. Функция загрузки библиотеки мне кажется должна быть реалдизована без передачи в нее массива, а с передачей неопределенного количества параметров. Еще лучше было бы сделать функцию выозова библиотек статичной.

2. Думаю что в корневую библиотеку нуежно включить класс парсера конфигурационных файлов.

3. Все сообщения об ошибках, которые связаны с библиотекой классов, будут находится в файле Framework.Exceptions.xml. Все данные об ошибке, так же как и определение степени фатализма ошибок будут находится там же. Разбор данных об исключении будет идти через xPath в нашем XML файле.
Т.е. Допустим, для твоей ошибки будет пераданы следующие параметры:

Код

throw new fatalException('Web.Framework.EmptyLibraryName');


Далее получая имя ошибки мы с помощью xPath выдираем нужные нам данные из XML файла, выводим данные или отправляем их на мыло. Все зависит от того какой уровень фатализма у данной ошибки.

Хотя в данном случае наверное придется немного переделать наш класс обработки ошибок.

4. Все классы библиотеки наследуются от корневого Web, это значит что передаем мы имя библиотеки целиком:

Код

Web::Using(
    'Web.Xml',
    'Web.Data',
    'Web.OtherLib'
);


Файлы библиотеки соответственно у нас Web.Xml.php и т.п.

5. Названия ошибок все должны быть на русском + при выводе должен быть красивый шаблон, если ошибка критическая. И данные о том что мол свяжитесь с администратором в случае возникновения ошибки.

PS осталось только прикрутить по человечиски РНР 5 к своей машине и можно будет написать нормальный пример smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 28.6.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



1) Ок, передеалаю на get_function_args()
3) Я же писал, что пример без конфигов, поэтому так накодил smile
4) Думаю нужно всё таки сделать объявление класса, что бы было гораздо удобнее со всем работать...
PM MAIL Skype   Вверх
skalex
Дата 28.6.2005, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: нет
Всего: 23



Как собираетесь организовать доступ к экземплярам создаваемых объектов внутри классов ?
PM   Вверх
Opik
Дата 28.6.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Код

$this->$lib = new $lib;

Код

$object->xml->method

?
PM MAIL Skype   Вверх
skalex
Дата 28.6.2005, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: нет
Всего: 23



Я не про это ... smile

Допустим есть такие классы, доступ к экземплярам которых хочется осуществить из любой точки компонента веб-приложения (наиболее просто).

Я иногда делаю так. Я пользуюсь не пользуюсь явно конструктором класса, а использую заранее определенный метод (например, ClassName::Instance())).

Что делает этот метод? Концептуально все такие экземпляры классов хранятся в спец. массиве (например $GLOBALS['permament']). Метод проверяет, был ли уже создан данный экземпляр. Если да, то он вытаскивает его из массива, иначе возвращает новый.
PM   Вверх
IZ@TOP
Дата 28.6.2005, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Цитата(Mace @ 28.6.2005, 18:38)
Что делает этот метод? Концептуально все такие экземпляры классов хранятся в спец. массиве (например $GLOBALS['permament']). Метод проверяет, был ли уже создан данный экземпляр. Если да, то он вытаскивает его из массива, иначе возвращает новый.

Вот с этим я согласен.

И еще, если класс не загружен, вызывается библиотека в которой он содержится с помощью статичного метода Web::Using внутри модуля которому он требуется.

Хотя нет. Точнее будет так. В наших модулях будет просто объявление

Web:Using(...) тех модулей которые ему нужны, сама функция юзинг проверит загружали ли те библиотеки, если нет - загрузит.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Wowa
Дата 11.7.2005, 04:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Давайте поактивнее smile
PM WWW   Вверх
Opik
Дата 11.7.2005, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Wowa
я у себя потихоньку делаю. Как будет новое - выложу. Правда медленно идет из-за нехватки времени.
PM MAIL Skype   Вверх
IZ@TOP
Дата 14.7.2005, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Wowa, я сейчас уже подобную систему на РНР 4 заканчиваю, как только доделаю - возьмусь переписывать свою часть на РНР 5.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Render
Дата 29.7.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



Предлагаю выкладывать какие-то наработки дорабатывать будем командно. А то что-то дальше обсуждения и мечтаний не ушли. smile smile smile smile
PM   Вверх
IZ@TOP
Дата 1.8.2005, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Render, могу выложить классы на под РНР 4. Кто будет переписывать под 5ку?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Wowa
Дата 1.8.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(IZ @ 1.8.2005, 12:34)
Render, могу выложить классы на под РНР 4. Кто будет переписывать под 5ку?

ты ведь вроде собирался smile
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Vingrad CMS | Следующая тема »


 




[ Время генерации скрипта: 0.1607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.