Попытка писать в ООП. Вопрос во взаимодействии классов с БД

Статус
В этой теме нельзя размещать новые ответы.

Тугай

Новичок
Страшный Злодей,
такое взаимодействие делается через глобальную переменную, точно также как и без ООП.
Эту переменную $link можно "прятать" разными способами, самый простой это сделать ее - public static свойством класса приложения скажем App.
Все классы которым нужен доступ к базе обращаются к App::$link.
Если нет понимания зачем нужна обертка над mysqli или PDO - городить огород не надо, лучше пользоваться напрямую.
Соеденятся с базой можно также вызвавая статический метод App::connect()

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

AmdY

Пью пиво
Команда форума
Тугай, ну вот, ты влез со своим статиком, а ведь ТС оставалось разобраться с синтаксисом и ответить на мой вопрос откуда взялся $link, чтобы открыть для себя делегирование.
 

Тугай

Новичок
AmdY, тс'у много что надо открыть, для него это все мутные абстракции, он только решил попробывать ООП
и ему нужно проделать ряд шагов, чтоб прийти в том числе и к делегирированию.

Страшный Злодей,
Model View Controller (MVC). Переходя к ООП, в этой тройке начиная с Model, дорога часто заводит темный лес "ORMов", за деревьями которого начинающему ничего не видно.
Попытка обломалась потому, что это не задача Model организовывать взаимодействие с бд и т.п. Организацией взаимодействия занимается Controller.
Через статик, через делегирование, через registry, через события, еще как-то, каждый фреймворк предлагает свои инструменты.
В своем велосипеде каждый свободный художник. :)
(Код Kohana - будет понятнее кода Symfony, для того кто мало знаком с ООП и паттернами как раз из-за статики.)
 

Страшный Злодей

Бывший член клуба (достало хамство).
Тугай, спасибо за желание вникнуть и помочь. Вы наверное один из немногих, кто все-таки понял, что моя проблема как раз в понимании логики и схем проектирования на ООП, а не в синтаксисе как таковом (как некоторые тут пытаются меня убедить). Синтаксис дело не хитрое. Когда понимаешь, что хочешь реализовать, то пробежаться по справочникам, манам и найти нужные конструкции можно достаточно быстро, но мне это сейчас (пока) не требуется. Все, что я хотел получить в рамках данной темы, это понимание, которое бы помогло мне составить схему или, проще говоря, псевдокод под имеющуюся задачу. Неожиданно, основные советы, которые дают в рамках топика, сводятся к тому, чтобы я внимательно перечитал Александрийскую библиотеку, что в моем понимании ни как не может соизмеряться со значимостью вопроса. В лучшем случае мне советовали изучить несколько работающих фреймворков, это уже не так времязатратно, но и все равно, очевидно, что сила предлагаемого заряда более чем на воробья. Один достойный участник, действительно очень помог мне советом, но сделал это через личку, дабы не участвовать в общем сраче, который к этому времени разразился под моим топиком (с удовольствием бы публично назвал и поблагодарил этого человека, но поскольку помощь была в личке, она возможно имеет степень конфиденциальности). Как-то так. В общем, в очередной раз отхватил несколько порций говна и как обычно помощь приходится искать совсем в других местах.
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
Тугай, так статика это как раз и не ООП, это процедурщина завёрнутая в класс как неймспейс. А ООП - это прежде все объект с состоянием и действия на основании этого состояния. ТС нужно понять, что если в конструктор заинжектить завосимосость при создании объекта, то её можно использовать в других методах этого объекта.

PHP:
class Foo {
    /**
    * @var DbConnect
    */
    protected $link;
    public function __construct(DbConnect $link) {
        $this->link = $link;
    }
    public function bar() {
        return $this->link->foo();
    }
}
 

Страшный Злодей

Бывший член клуба (достало хамство).
Тугай, так статика это как раз и не ООП, это процедурщина завёрнутая в класс как неймспейс. А ООП - это прежде все объект с состоянием и действия на основании этого состояния. ТС нужно понять, что если в конструктор заинжектить завосимосость при создании объекта, то её можно использовать в других методах этого объекта.

PHP:
class Foo {
    /**
    * @var DbConnect
    */
    protected $link;
    public function __construct(DbConnect $link) {
        $this->link = $link;
    }
    public function bar() {
        return $this->link->foo();
    }
}
AmdY, а как наш долбаный ТС может вообще до этого дойти, если советы, которые Вы ему даёте, сводятся к "почитай книгу размером более чем в 600 страниц, а то твой код ужасен..."?

P/S: вообще, кто-нибудь представляет, сколько страниц текста насоветовали бедному ТС почитать в данной теме?
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
Так ты уже должен был успеть их прочитать за выходные. А основы синтаксиса за час http://php.net/oop, но без этого никуда.
 

Страшный Злодей

Бывший член клуба (достало хамство).
Так ты уже должен был успеть их прочитать за выходные. А основы синтаксиса за час http://php.net/oop, но без этого никуда.
Знаете, в выходные я иногда люблю медитировать... :rolleyes:

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

А вообще, по поводу необходимости чтения: вот Вы сами, каким, удивительным образом, умудряетесь, отвечая на мои посты, не читать оных? Ну, например, о чудо-книге в 600 страниц, было ведь сказанно - "если вы о «профессиональное програмирование на PHP», то с ней ознакомился ещё лет 8 назад...". Или про синтаксис, о котором Вы так настойчиво пишите, было довольно подробно сказанно тут, как раз над Вашим постом Тугаю, там же была, в очередной раз, раскрыта искомая проблема и я даже не говорю, о таких мелочах, что, она же, была обозначена в самом топике который видимо никому читать не охота...
 
Последнее редактирование:

Страшный Злодей

Бывший член клуба (достало хамство).
а какой выбор? ну скачай видео уроки, мало что подчерпнешь, зато читать не нужно
Нет, видео уроки, это конечно "вырви глаз". Такой путь, вообще, не обсуждается. Нормальным путем мог бы быть форум и в этой же ветке, выше, я давал ссылку, на пример того, как могло бы тут происходить общение. Отклика ссылка не нашла, очевидна та культура общения оказалась здесь по каким-то причинам чужеродной и неприемлемой. Привить уважительное общение, здесь походу также непросто, как в нашем обществе, насадить европейскую вежливость (не говорю уже о японской учтивости, которая, в свою очередь, уже и самих европейцев обнаруживает дикарями).
 

AmdY

Пью пиво
Команда форума
Знаете, в выходные я, иногда, люблю медитировать... :rolleyes:

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

А вообще, по поводу необходимости чтения: вот Вы сами, каким, удивительным образом, умудряетесь, отвечая на мои посты, не читать оных? Ну, например, о чудо-книге в 600 страниц, было ведь сказанно - "если вы о «профессиональное програмирование на PHP», то с ней ознакомился ещё лет 8 назад...". Или про синтаксис, о котором Вы так настойчиво пишите, было довольно подробно сказанно тут, как раз над Вашим постом Тугаю, там же была, в очередной раз, раскрыта искомая проблема и я даже не говорю, о таких мелочах, что, она же, была обозначена в самом топике который видимо никому читать не охота...
Типичный ватник, поди сам верит в то, что пишет. Ты бы хоть книжку открыл, прежде чем соловьём заливаться, там как раз твой случай рассмотрен начиная с 57-й страницы.
 

Страшный Злодей

Бывший член клуба (достало хамство).
Что такое ватник? Насколько я знаю из новостных сюжетов, это одна из тех обзывалок, которыми одни жители Украины называют жителей другой части этой страны, имеющих оппозиционные политические взгляды. Насколько я помню, своих политических пристрастий, в рамках форума, я не высказывал. Поясните, каким боком данное определение Вы соотносите с моей персоной?

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

AmdY, у Вас нет общущения, что Вас временами заносит и Вы переходите разумные культурные рамки? Или для "неватников" вежливость в общении это пустой звук, а "Пью пиво" — жизненное кредо?
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Указанный Вами пример, мне не показался понятно описывающим интересующую меня задачу.
А мне показался, как и, похоже, всем остальным тут. Может быть, тогда задачу надо описать поподробнее? Заодно наверняка выяснится, что задача в терминах ООП вообще должна ставиться не так.

Хотя мне начинает казаться, что тебе надо не учиться, а чтобы по головке погладили. Это не сюда точно.
 

AnrDaemon

Продвинутый новичок
Знаете, в выходные я иногда люблю медитировать... :rolleyes:

Вы хоть смайлик в конце первого предложения поставьте, а то я как прочитал, так чуть морсом не облился! Уж беспокоиться начал о Вашем самочувствии.
Вот и медитировали бы на что-то полезное. А если читали 8 лет назад, то самое время открыть и повторить прочитанное.
 

Страшный Злодей

Бывший член клуба (достало хамство).
А мне показался, как и, похоже, всем остальным тут. Может быть, тогда задачу надо описать поподробнее? Заодно наверняка выяснится, что задача в терминах ООП вообще должна ставиться не так.

Хотя мне начинает казаться, что тебе надо не учиться, а чтобы по головке погладили. Это не сюда точно.
fixxxer, наверняка Вы правы, эту задачу должно быть правильнее излагать в других терминах ООП, но я пока этой терминологией не особо владею. Если пойдет на пользу, то с удовольствием изложу свою задачу подробнее, в том месте, где это потребуется (хотя, по правде, актуальность вопроса немного спала). Однако, перед этим, давайте вначале удостоверимся, что сам топик и этот пост были прочитаны. Тем более, что например для Balancer судя по его ответу, для понимания хватило лишь первого описания. Как раз что-то похожее на его ответ я и ожидал увидеть, но возможно чуть полнее и от разных людей.

На последнее замечание маленьким шрифтом, могу лишь сказать - мне так не кажется и я надеюсь, что Вы ошибаетесь. Все-таки не стоит уравнивать болезненную потребность в ласках с неприятием бескультурья и эмоциональной несдержанности.
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
А, ну это только часть ответа, т.к. вопрос, где выложен код, невозможно воспринимать без предполагаемого вопроса "что тут не так". Ответить тут развернуто в рамках форума не представляется реальным, это больше будет похоже на написание довольно объемной статьи - потому и даются ссылки на литературу.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху