Вопрос про паттерны проектирования

StalkerClasses

Новичок
Правильно ли понимаю что любой из паттернов это лишь идея как решить задачу. Имена классам могут даваться совершенно разные и без постыиксов и суффиксов.

Я пока освоил только один паттерн - одиночка. И не могу понять как мне понять что вот например в ларавеле или в yii используется этот паттерн? + Научился читать uml диаграмма классов
 

StalkerClasses

Новичок
Вот что я пока в принципе освоил :

Composer
Php storm + git понял что такое git flow и git workflow

Php ООП (пока только парадигмы инкапсуляции, наследования, полиморфизма) + чтение uml диаграмм классов

MySQL и er диаграммы

В процессе doker но в нем так понимаю что пока особо ловить нечего так как надо понимать веб серверы и их точечную настройку

PSR 1,2,4,12, + psr5 и как документироваться код . Почитал что такое clear код например что класс нужно называть существительным, а метод глаголом. Что метолы не нужно делать жирными, если он жирнеет нужно разбить на несколько методов.

Разобрался как подключатся по ssh через шторм и как можно что то через терминал поменять на хостинге например создать папку

Смог поставить ларавель и смог сделать небольшой сайт с 1 миграцией

И немного с GitHub как тула загружать и выгружать проекты

Чисто теоретически ещё понял что такое http и как это работает (запрос - ответ)
 
Последнее редактирование:

StalkerClasses

Новичок
В ООП по крайней мере я теперь понимаю что такое Интерфейс, абстрактный класс, что такое публичные своиства и закрытые
 

StalkerClasses

Новичок
По поводу static ну как все и понимал - это обращение к дочернему классу - не понятно только почему он так извращённо называется
 

WMix

герр M:)ller
Партнер клуба
По поводу static ну как все и понимал - это обращение к дочернему классу - не понятно только почему он так извращённо называется
какая глупость, и даже не потому что не понял, а потому что не поняв, пытаешься что-то рассказывать
нет, static он такой же дочерний как и родительский!

Вот что я пока в принципе освоил
sehr gut
 

StalkerClasses

Новичок
Да я как раз по этой ссылке иду. Но мой вопрос по прежнему актуален - если кто то использовал паттерн Singlton он будет использовать префикс или нет в своём коде?
 

StalkerClasses

Новичок
Ты серьезно? К дочернему?

Я уже все перечитал что бы понять что такое позднее статическое связывание


Ключевые слова $this, self::, static::, parent::

// Внутри класса:
$this-> | -> обращение к текущему экземпляру объект внутри класса
parent:: | -> обращение к содержимому родительского класса
self:: | -> (класс в котором написано) обращение к содержимому текущего класса
static:: (children) | -> (класс в котором выполнилось).

Разница между self и static хорошо видна, например, когда вы делаете new self() или new static()
В первом случае будет создан объект класса, где упомянут self (т.е. создан родитель),
Во втором - объект того класса, где вызывается метод (т.е. потомок).

---

self::staticMethod(); в первом случае обращение идет к текущему классу
static::staticMethod(); во втором случае обращение идет к дочернему классу (extends)
 

StalkerClasses

Новичок
По поводу статики я не имею в виду статические переменные и методы которые принадлежат классу.

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

WMix

герр M:)ller
Партнер клуба
static::staticMethod(); во втором случае обращение идет к дочернему классу (extends)
Код:
www-data@cli:~$ php -a
Interactive shell

php > class A{static function b(){return 'A';}}
php > class B extends A{static function run(){return static::b();}}
php > echo B::run();
A
php >
 

StalkerClasses

Новичок
Код:
www-data@cli:~$ php -a
Interactive shell

php > class A{static function b(){return 'A';}}
php > class B extends A{static function run(){return static::b();}}
php > echo B::run();
A
php >
В общем я так понял:

parent:: -> даст ссылку на родителя
self -> даст ссылку на текущий класс
static -> даст ссылку на вызывающий класс

В вашем примере не пойму одного.
Короче я не могу этого понять )))
 

StalkerClasses

Новичок
Код:
www-data@cli:~$ php -a
Interactive shell

php > class A{static function b(){return 'A';}}
php > class B extends A{static function run(){return self::b();}}
php > echo B::run();
A
php >

По идее в этом случае что return self что return static будет одно и тоже... )
Да я был прав... Если набить в php -a return self то будет вывод A
 

WMix

герр M:)ller
Партнер клуба

WMix

герр M:)ller
Партнер клуба
практическое применение
я не пользуюсь, любое решение прекрасно заменяется либо на константу либо на object property и становится только гибче.
да и singleton, это не решение, а от непонимания навороченное месиво. просто люди не умеют обьекты передавать, или не врубаются в dependency injection. из ниоткуда появившийся user или db это не решение это сокрытие зависимостей.
 
Последнее редактирование:

флоппик

promotor fidei
Команда форума
Партнер клуба
А практическое применение для статического значения какое?
поздное статическое связывание это просто способ избежать некоторой копипасты иногда. Это не ООП даже, строго говоря, и кроме как иногда углы срезать никак не используется.
 

StalkerClasses

Новичок
Хочу сделать агрегацию и композицию в PHPStorm (UML-классов) - но почему то не получается.
Интерфейс и наследование загораются соответствующими стрелочками... А вот с агрегацией и композицией никак прям...
 
Последнее редактирование:
Сверху