[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООПять.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
forza
twin
Цитата
Совсем глупо. Зачем? Зачем в базе менять название колонки? Я ни разу не менял. Ради этого писать кучу классов... Увольте.

Цитата
А вот модель из YII попробуй запихать в кохану.

Я не пихал, и Вы не пихали и никто не пихал. Зачем?
Я в принципе не вижу смысла переносить рабочий проект с одного фреймворка на другой. Да и никто этим не будет заниматься. И вообще мне кажется глупой идей подключать сторонние библиотеки из других фреймворков/движков в не родную среду, поэтому довод, что Ваш класс можно адаптировать под другое ядро не совсем корректен.
А разве в чужой монастырь со своим уставом можно?

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
twin
forza
Цитата
Я в принципе не вижу смысла переносить рабочий проект с одного фреймворка на другой.
Так это мне в упрек ставят же... Я тоже не собираюсь этого делать. Адаптировать да, всегда пожалуйста. А там как в мультике "Лучше один день потерять, потом за 5 минут долететь". А противники мне крылья режут своими доводами про скрорсть разработки и унификацию biggrin.gif Не дают летать... Ползать надо говорят, ибо нефиг. Все ползают и ты ползай)))

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
forza
Мне кажется Вы не совсем поняли упрек. Вот смотрите явный минус Вашей теперешней архитектуры, по сравнению с архитектурой фреймворков. У вас приложение - монолит. Поясню. Если вам нужно создать 2 проекта с Вашим движком, то потребуется 2 раза продублировать системную папку(которая содержит в себе и контроллеры, системные файлы, относящиеся к этому проекту)
Пример:

shortlink
models
components
controllers
и т.д.

livefilm
models
components
controllers
и т.д.

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

В случае с фреймворком - проще (привожу в пример Yii, как у меня сейчас сделано)
 shortlink
livefilm
... и т.д.

[
b]yii[/b] - ядро


Достаточно поставить патч в 1 место и все проекты вылечатся.
Как видите, такая архитектура не заставляет Вас таскать все системные функции из одного проекта в другой, все аккуратненько сложено в 1ом месте. Хочешь используй их наработки, хочешь пиши свои. Грузятся только те файлы, которые нужны для работы приложения и ничего более.

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
SlavaFr
Цитата (twin @ 12.12.2012 - 11:25)
Мне что, по всем пректам этот класс БД за собой таскать?
ДА КОНЕЧНО!!! Именно в этом вся прелесть и заключается. Зачем же писать 100 раз тоже самое, если оно уже имеется?
Рассмотрим преимущества:
1) Если имеется и протестировано, то оно будет и в других местах работать
2) Если немного не подходит, то можно подправить при помощи extends или замены внутренних компонентов и наслаждаться тем, что тестировать надо только этот участок.
3) Если имеется описание типа БД , то можно работать не вникая в то, какая разновидность этого класс используется. Нам становится все ровно применяет ли он внутри mysql или mysqli или просто Mok. Это единственный способ по человечески раскидать большое задание на нескольких программистов или просто заниматься какой то задачей изолированно от других проблем.

Рассмотрим недостатки:
1) Если класс не грамотно продуман, я имею в виду не качество его внутреннего кода, а принцип его применения, то эти недостатки будут видны во всех местах использования. Если учесть что этот недостаток также может возникнуть и в линейном программировании, то нас не должно это останавливать применять класс БД во многих проектах.

Иногда при новых проектах ты понимаеш то, что твоя архитектура может быть конкретно улучшена, или старая конкретно устарела. В этом случае имеет смысл подумать о новом начале. В противном случае нет не какого оправдания для программирования уже написанного кода.


Цитата (twin @ 12.12.2012 - 11:25)
Тот HTML, который касается дизайнера, находится в шаблонах. В фреймворках кстати тоже есть скриптовые вьюшки, Dezigo нам любезно предоставил образец. Неужели дизайнеру с этим работать проще? И неужели дизайнер лезет в классы у вас?

    $excelObj->getSheet($sheetIndex)
            ->mergeCells("B$row:E$row")
            ->setCellValue("A$row",self::EXCEL_FORWARDER)
            ->setCellValue("B$row", $data['forwarder'])
            ->getStyle("A$row:E$row")
            ->getFont()
            ->setBold(true);

Дизайнеру этот скрипт не поможет, но было бы неправильно рассматривать View только как попытку отделения html от php. View это попытка отделить Оutput Логику от основного скрипта, и в примере с $excelObj это принцип на 100% исполнен. Мало того я могу себе представить, что инстанц этой View может быть заменен и при вызове тех же методов он будет выдавать вместо ехел к примеру хтмл или pdf.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
twin
forza
Цитата
Мне кажется Вы не совсем поняли упрек. Вот смотрите явный минус Вашей теперешней архитектуры, по сравнению с архитектурой фреймворков. У вас приложение - монолит. Поясню. Если вам нужно создать 2 проекта с Вашим движком, то потребуется 2 раза продублировать системную папку(которая содержит в себе и контроллеры, системные файлы, относящиеся к этому проекту)

Почему это. Кто мешает сделать тоже самое в моей структуре? Располагай выше корня систему, прописывай пути в конфиге и в путь. Если нужен однотипный функционал. На нашем проекте так и сделано, и ничего, работает. Не вижу принципиальной разницы...

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
SlavaFr
Цитата
ДА КОНЕЧНО!!! Именно в этом вся прелесть и заключается. Зачем же писать 100 раз тоже самое, если оно уже имеется?
Тоже не пойму. Я имел ввиду разные проекты. Не везде можно применить свой класс БД. А если такая возможность имеется, то в чем принципиальное отличие? и я лучше напишу 3 версии под разные носители, чем одну универсальную. Преимущество у класса разовое, в момент разработки, а код будет работать годами.

Цитата
Дизайнеру этот скрипт не поможет, но было бы неправильно рассматривать View только как попытку отделения html от php. View это попытка отделить Оutput Логику от основного скрипта, и в примере с $excelObj это принцип на 100% исполнен.
Так все-таки нечего делать дизайнеру в классе? Чем меня тогда упрекают? Логику я вполне спокойно могу разделить и без этих веревок. Ровно как и заменить весь модуль на вывод PDF.

Вы чего так панически боитесь, призывая к унификации? Код бывает двух видов. Уникальный, который по определению не может повториться в рамках одного проекта. Тогда унификация прямо вредна, ибо ведет к раздуванию и усложнению.

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

Разговоры о том, что можно поменять в одном месте запрос к примеру и он изменится везде - несостоятельны. Ибо многоразовый код пишется как раз централизованно, как мой пример с консультацией. Меняешь что-либо в модели и на всех страницах, где она используется, все меняется. Другой вопрос, когда это вообще общий класс. Скажем User. Так вот, изменив что-то в нем, можно получить нежелательный эфект там, где этого изменения не ждали. Потому и делаются абстрактные модели и переопределяются методы в наследниках. Я просто не понимаю профита, зачем делать общий базовый класс, если все равно в наследниках мы пишем свою реализацию. Зачем эта шапка Мономаха? Что бы собрать воедино разные кусочки функционала. Это как у Попова.
Цитата
Если существует в глобальном массиве $_POST['title'] опр. ячейка, то мы создаем простую переменную из неё.
Если переменная пустая, то уничтожаем переменную.
Не проще ли не создавать, если пусто? И не проще ли не соединять, если до этого не делить?

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Rand
Не к теме
Цитата (killer8080 @ 12.12.2012 - 16:26)
это не моё мнение, это стратегия разрабов PHP. То что Mysql кандидат на вылет - это факт, и лишь вопрос времени.

Извините, сейчас работаю не в сфере веба и похоже за это время что-то упустил. Можно пруф?

А вообще было бы неплохо иметь в PHP замещение функций. Есть у тебя проект с сотнями вызовами mysql_query и тебе (ВНЕЗАПНО!) надо перейти на другую СУБД - оверрайдишь её и нет проблем (исключая диалект SQL и моральные терзания по поводу названия функции) biggrin.gif
killer8080
Цитата (Rand @ 12.12.2012 - 16:26)
это не моё мнение, это стратегия разрабов PHP. То что Mysql кандидат на вылет - это факт, и лишь вопрос времени.Извините, сейчас работаю не в сфере веба и похоже за это время что-то упустил. Можно пруф?
Цитата (Rand @ 12.12.2012 - 16:26)
А вообще было бы неплохо иметь в PHP замещение функций. Есть у тебя проект с сотнями вызовами mysql_query и тебе (ВНЕЗАПНО!) надо перейти на другую СУБД - оверрайдишь её и нет проблем (исключая диалект SQL и моральные терзания по поводу названия функции)

Вот для этого и нужны классы, вместо прямого взаимодействия с API
DarkLynx
Читал тему, в холивар влезать не хочу.. Вот хочу узнать у Dezigo..
Вот в твоем коде есть модель Question и менеджер Question в разных пространствах имен Model и Manager соответственно.. Так вот у меня вопрос.. (не кричите я не так хорошо знаком с применением пространства имен, но мой вопрос показывает мое понимание использования пространств имен)..
Зачем объявлять 2 пространства имен и при это классы внутри этих пространств называются Question и QuestionManager... Разьве пространства имен не служат для того что бы мы могли иметь одно названия классов в разных пространствах имен?
twin
Блин. Хотелось бы мне посмотреть на человека, которому ВНЕЗАПНО потребовалось бы перевести действующий проект на другую СУБД. А данные тоже внезапно перетаскивать?

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Dezigo
Цитата (DarkLynx @ 12.12.2012 - 14:33)
Читал тему, в холивар влезать не хочу.. Вот хочу узнать у Dezigo..
Вот в твоем коде есть модель Question и менеджер Question в разных пространствах имен Model и Manager соответственно.. Так вот у меня вопрос.. (не кричите я не так хорошо знаком с применением пространства имен, но мой вопрос показывает мое понимание использования пространств имен)..
Зачем объявлять 2 пространства имен и при это классы внутри этих пространств называются Question и QuestionManager... Разьве пространства имен не служат для того что бы мы могли иметь одно названия классов в разных пространствах имен?

Верно именно так.
Визуально привык , кому как удобно.
Я не останавливался на этом, можно и autoloader и без namespace.

П.С
Вы же прекрасно понимаете, если бы нужно было создать framework,
нужно проектировать его,
а это не 1-2 дня.
Dezigo
Цитата (twin @ 12.12.2012 - 14:34)
Блин. Хотелось бы мне посмотреть на человека, которому ВНЕЗАПНО потребовалось бы перевести действующий проект на другую СУБД. А данные тоже внезапно перетаскивать?

Раньше была
MSSQL_QUERY, MSSQL_FETCH_ARRAY 
( библиотека mssql.dll )
microsoft от этого отказалась, и в php 5.3.x , не стала поддерживать.
Внесала свою sqlsrv_.

Всё на новый сервер нельзя уже перейти, изменить это недели тратить пришлось..
Тоже вот так вот люди думали, о нет, нечего не измениться.
http://www.microsoft.com/en-us/download/de...s.aspx?id=20098
Oyeme
Namespaces - это логические пакеты,состоящии из классов.
Как в java(packages)

Вы всегда знаете к чему какой пакет относится.
Например:

Человек(название namespace)
-Голова
-Рука
-Тело

Правильное проектирование,разбивает вашу логику на логические пакеты.(А не все в кучу)
DarkLynx
Я имею ввиду использование неймспесов в примере Dezigo как указание на то к чему мы обращаемся. То есть у нас есть класс Question и в модели и в менеджере, но указав пространство имен мы знаем куда обращаться.. Не так?
Dezigo
Цитата
но указав пространство имен мы знаем куда обращаться

Да знаем:
Вот тебе пример:

Наша структура

PHPFORUM
  • -RU
  • -Manager
  • -Helper

<?php
namespace PHPFORUM\RU

use PHPFORUM\Manager;
use PHPFORUM\Helper;


$questionManager = new Manager\Question();

$questionHelper = new Helper\Question();


При это структуре сразу понятно, кто что использует и откуда.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.