@phpclubru

Страница 883 из 956
dypa
18.04.2019
09:13:40
а как конструктор использовать? ?
свойства и сеттеры никуда не делись, да и область видимости при require остается той же - так что даже в конструктор прокинуть значение выйдет

Dmitry
18.04.2019
09:14:21
криво

Pavel
18.04.2019
09:15:51
Да, в пхп впринципе можно многое сделать из нормальных языков, только криво ?

dypa
18.04.2019
09:16:48
IDE много чего не поддерживают или поддерживают через костыли phpdoc анонимные классы умеют в интерфейсы

Google
dypa
18.04.2019
09:18:18
конечно криво, я о том же. главное что это можно сделать

Dmitry
18.04.2019
09:19:43
а что, никаких rfc на область видимости классов в неймспейсах еще не создали? ?

dypa
18.04.2019
09:19:58
я тебе показал poc для "модуля" в пхп, не более. победила другая парадигма

ZF официально похоронили ;)

Дон
18.04.2019
09:31:17
кому нужна модульность в php?

Andrew P.
18.04.2019
09:39:14
кому нужна модульность в php?
прочитал "кому нужна мощность в php"

Pavel
18.04.2019
09:51:00
кому нужна модульность в php?
Тем кто пишет много бизнес-логики, полагаю, нужна довольно сильно.

Kirill
18.04.2019
09:53:57
Модуль это вообще слишком абстрактное понятие. Что конкретно подразумеваете под модулем?

Pavel
18.04.2019
09:56:39
Ну на самом деле все примерно об одном и том же думают - возможность обозвать некий набор функций/классов/констант одним идентификатором - именем модуля, и потом оттуда эти функции и классы импортировать по одному либо сразу кучей.

Но с концепцией неймспейсов и приватных классов пересекается, и она возможно более мощная.

Ну, это крайне корявое определение, если вдуматься :)

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

Google
dypa
18.04.2019
10:30:08
> A namespace is a set of some code, like variables, functions and procedures, which can be used in other code. > A file is a set of some code, like variables, functions and procedures, which can be used in other code. > A git repository is a set of some code, like variables, functions and procedures, which can be used in other code. так себе определение

Pavel
18.04.2019
10:31:10
тем более что в пхп, где что угодно может динамически появиться откуда угодно, модули будет очень сложно поддерживать

В общем чем больше определений читаю тем больше кажется что модули это какая-то притянутая за уши фигня

Pavel
18.04.2019
10:35:32
Неймспейсы это по факту целое дерево модулей - ты можешь импортировать сразу кучу классов используя более глобальный неймспейс use My\Namespace; , а можешь импортировать подмножество use My\Namespace\Utils

Вот только не хватает inner/private модификаторов для классов, действительно

Dmitry
18.04.2019
10:38:50
основная проблема пхп в плане модулей - это глобальность видимости классов это дает две проблемы - невозможность выделить экспортируемый интерфейс библиотеки и невозможность подключения библиотек с одинаковым неймспейсом

Pavel
18.04.2019
10:39:02
Ну одну функцию импортировать - это пожалуйста. А импортировать все функции в локальный скоуп - значит засрать его, при этом ты даже не можешь понять что именно туда импортнулось.

Dmitry
18.04.2019
10:39:44
хотя второе, если честно, может и к лучшему... порой очень мешает, но в результате профит в виде упрощения дерева зависимостей... но порой приходится долго костылять

Pavel
18.04.2019
10:40:08
Второе ты и так можешь сделать

Dmitry
18.04.2019
10:40:32
а первое... вполне себе можно решить соглашениями... вон живет питон на соглашениях...

Pavel
18.04.2019
10:41:42
А для первого - представь что ты используешь функцию kek() в своем коде, и импортируешь все из какого-нибудь неймспейса \Spacex\*. Потом кто-то добавил в этот неймспейс функцию kek(), ты обновил у себя модуль, и вуаля, твоя функция kek() модменилась функцией kek() из неймспейса а ты даже и не заметил.

Dmitry
18.04.2019
10:41:55
вопрос стат анализа, решается тоже

Pavel
18.04.2019
10:42:58
Так что лучше уж импортировать неймспейс в какой-то локальный неймспейс типа use My\Very\Long\Name\Space\Utils as Utils и в коде обращаться по Utils\kek()

И вроде бы в typescript так же сделано

Dmitry
18.04.2019
10:43:44
интерпретатор не нужно, стат анализа достаточно

dypa
18.04.2019
10:44:32
а еще лучше не писать на пхп, бери перл и обмазывайся модулями

Pavel
18.04.2019
10:44:51
Брать перл это некрофилия

Google
Pavel
18.04.2019
10:49:25
А какая разница как называть если эффект одинаковый?

область видимости - это тоже концептуальный сахар, через таблицы текущих видимых символов

Admin
ERROR: S client not available

Pavel
18.04.2019
10:50:39
Так что нет, не смущает.

dypa
18.04.2019
10:51:51
Брать перл это некрофилия
цитировать его документацию тоже, но раз человеку комфортно - почему бы и нет

проще ныть про несовершенство пхп

Dmitry
18.04.2019
10:52:33
не нужно нафиг... только от совсем идиотов, а им закон не писан

dypa
18.04.2019
10:52:52
чего ж ты нам их скидываешь?!

Pavel
18.04.2019
10:53:20
Как это не делает ничего? Если ты напишешь use function \My\Cool\func то у тебя func импортируется в текущую область видимости, просто эта область - только файл/неймспейс, мельче нельзя.

Dmitry
18.04.2019
10:53:20
можешь указать его руками

автолоад - это автоматический импорт не хочешь автоматическийимпорт - можешь писать руками require профит

Dmitry
18.04.2019
10:55:56
смысл сего набора слов мне не понятен

зачем мне это делать?

Pavel
18.04.2019
10:58:01
Ты демагогствуешь. Если после выполнения `use function \My\Cool\func` я могу в файле обратиться к функции `func` используя 4 символа, то это и есть по определению импорт в текущий скоуп. А как это под капотом сделано уже вопрос десятый.

А, ну ты смешал с автолоадингом. Ну так все давно уже композер автолоадит, а мейнтейнеры пакета в "autoload" приписывают какой файл с функциями прогрузить.

Я тебе могу привести аналогию с исходниками в c# - там если файл "MyLib.cs" не прописан в xml конфиге специальном то сборщик этот файл вообще не увидит. То же самое.

Ну в пхп область видимости одна на весь файл, ну и что.

С его привычкой иметь много маленьких файлов это не проблема.

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

Google
Pavel
18.04.2019
11:07:59
На неймспейс в рамках файла, конечно ;) Но в 99% случаев в файле не более одного неймспейса.

dypa
18.04.2019
11:09:13
область видимости класса не забыл?

Страница 883 из 956