LINUX.ORG.RU

PHP - аннотация ориентированный язык?

 , ,


0

1

Привет! На днях начал штудировать php вместе взятыми его symfony/laravel фреймворками. Но задаюсь вопросом? Почему так много аннотаций? Если честно мне начинает всё это раздражать. Такое ощущение я не код пишу, а только аннотации/комментарии. Я конечно понимаю, что всё это преобразуется в код. Но зачем? Почти вся логика контролеров пишется в аннотациях. Что за шляпа вообще? Мимо вкатыш из питона.



Последнее исправление: superteremok (всего исправлений: 3)

Это нужно что бы потом можно было изи сделать документацию

https://ru.wikipedia.org/wiki/PHPDoc

  • это помогает стать php так сказать «строго типизированным» языкм
romanlinux ★★★
()

Почему так много аннотаций?

Потому что фундамент дома был плох и поздно его перестраивать.

Владимир

anonymous
()

symfony

Ты можешь руками вызывать все нужные методы, без аннотаций.

ya-betmen ★★★★★
()

Почему так много аннотаций?

Хотят быть святее Папы Римского жабу переплюнуть.

Такое ощущение я не код пишу, а только аннотации/комментарии

Добро пожаловать в программирование на xml/yaml.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от anonymous

Это я к тому, что люблю Оскара Уайльда

Это да, хороший писатель.

fernandos ★★★
()

Почти вся логика контролеров пишется в аннотациях. Что за шляпа вообще?

Типа, так быстрее и изящнее - прямо возле метода контролера указал, что, зачем и почему. Не надо куда то лазить, чего там искать в других файлах, все в одном месте. Но я их тоже недолюбливаю. XML для конфигурации и ручная прописка зависимостей - круче, так как меньше магии. Но если надо быстро, грязно что-то набросать, да, с аннотациями и прочим «по умолчанию» по быстрее и по лаконичнее будет.

anonymous
()

симфони нахер, ларавель только ковыряй. а лучше ноду ковыряй на пхп ни вебсокетов, ни http/3 не будет

tz4678 ★★
()
Ответ на: комментарий от MOPKOBKA

вебсокеты корявые есть, но это лапша на коллбеках как в свое время была нода + сам язык ублюдский, где переменные объявленные выше по скопу в контекст коллбебка не передаются

tz4678 ★★
()
Ответ на: комментарий от tz4678

модулей нету (реализация паттерна синглтон, который джава-петухи, а вместе с ними пхпшные макаки признали вредным). не язык, а урод. в приницпе только и остается, что в java-стиле писать, чтобы не высирать тонну кирпичей, но зачем на чем-то писать в java-стиле, когда можно писать на java

tz4678 ★★
()
Ответ на: комментарий от anonymous

я начинал писать на php в 2009 году и писал на нем до 2017, поэтому его ненавижу.

tz4678 ★★
()
Ответ на: комментарий от tz4678

Так сопрограммы же есть.

переменные объявленные выше по скопу в контекст коллбебка не передаются

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

for(var i = 0;i < 10;i++) {
  for(var i = 10;i < 20;i++) {
  	document.write(i + '<br>');
  }
}
Полный вывод:
10
11
12
13
14
15
16
17
18
19

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

А что по-твоему должно было произойти?

Первая итерация внешний цикл

i = 0

Внутрений цикл: i теперь 10, напечатает числа 10..19 и увеличит i на 1 (19 + 1 = 20)

Вторая итерация внешнего цикла: i (=20) < 10 = false - выход из цикла

Ну ты и быдлокодер

tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от tz4678

Про js-quiz’ы там обычно замыкания:

const arr = [10, 12, 15, 21];
for (var i = 0; i < arr.length; i++) {
  setTimeout(function() {
    // тут i принадлежит глобальному скопу и всегда 4, потому как этот код вызвается в следующей итерации основного цикла все 4 раза
    console.log('Index: ' + i + ', element: ' + arr[i]);
  }, 10);
}

// Index: 4, element: undefined

// Но стоит заменить var на let
for (let i = 0; i < arr.length; i++) {
  setTimeout(function() {
    // тут i принадлежит локальному скопу (внутри итерации)
    console.log('Index: ' + i + ', element: ' + arr[i]);
  }, 10);
}

// Index: 0, element: 10
// Index: 1, element: 12
// Index: 2, element: 15
// Index: 3, element: 21
tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от tz4678

А что по-твоему должно было произойти?

Поехавший, а ты что ожидал с захватом? Незнакомый с JS ожидает того результата что будет в остальных языках.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от tz4678

PHP - аннотация ориентированный язык? (комментарий)

сам язык ублюдский, где переменные объявленные выше по скопу в контекст коллбебка не передаются

У тебя в одном языке фичи, а в другом недостатки.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от Psilocybe

Прочитай стандарт ECMAScript такое поведение прописано в нем. var инициализирует переменную ТОЛЬКО ПО НЕОБХОДИМОСТИ.

(function () {
  var x = 42
  var x
  console.log(x)
})()
>>>>>>>>>>>>>> 42
// проверить имеется ли в локальном скопе "ячейка" для хранения значения i
// ее нет -> заводим "ячейку" для хранения i
// присваиваем i значение
for(var i = 0;i < 10;i++) {
  // ячейка есть -> присваиваем значение i
  for(var i = 10;i < 20;i++) {
tz4678 ★★
()
Ответ на: комментарий от Psilocybe

А у php нету будущего, потому как он был придуман чтобы сдохнуть (CGI), FastCGI лишь продлил эту затянувшуююся агонию. Язык название которого расшифровывается как Personal Home Page, который был придуман как шаблонизатор для Perl, а потом по-недоразуменью ставший популярным (точнее потому что с ним можно было на коленке сделать СВОЙ говнохостинг любому предприимчивому суслику, нарезать по 30 мегабайт места и одним инстансом жопача запускать скрипты пользователей (даже у меня был свой «хостинг», че тут говорить)) не стоит того чтобы тратить на него свое время. Все что написано на пхп - это адское говно, самое смердящее легаси, и все кто на нем пишут, пусть даже прикрываясь джава-терминологией умственно-отсталые дебилы, которые завтра как одинэсники будут сосать за бичпакеты . Он точно уж нормальным языком не является.

tz4678 ★★
()
Ответ на: комментарий от MOPKOBKA

О PHP

А у кошки четыре ноги,
Позади у нее длинный хвост.
МОРКОВКА - трогать ее не моги
За ее малый рост, малый рост

...
У ней голубые глаза,
На ресницах застыла слеза.
Это МОРКОВКА наступил ей на хвост,
Несмотря на ее малый рост
anonymous
()
Ответ на: комментарий от tz4678

у всех языков есть свои странности

Ну если уж быть совсем честным, то «переменные объявленные выше по скопу в контекст коллбебка не передаются» тоже можно отнести к «странностям языка» PHP. При этом непонятно, почему в случае JS эта «странность» является «нормальным поведением, прописанным в стандарте», а в случае PHP — это явный недостаток, а не «задокументированная особенность языка».

var в JS — это кусок говна, появившийся как следствие хренового дизайна языка (ну прям как в PHP). Другое дело, что уже давно вышли новые редакции стандарта языка, которые проблемы хренового дизайна исправляют, так что теперь вместо него можно использовать let/const, у которых нет недостатков var. Как с этим дело происходит в PHP, не знаю.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 3)

начинает всё это раздражать

не используй. в доке есть примеры с аннотациями и без

wxw ★★★★★
()
Ответ на: комментарий от tz4678

Хотя это похоже на cpp, где error: ‘x’ is not captured:

#include <iostream>
using namespace std;

int main() {
	auto x = 42;
	auto f = [&x] () { cout << x << endl; };
	f();
	return 0;
}
tz4678 ★★
()

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

cobold ★★★★★
()
Ответ на: комментарий от tz4678

Хотя это похоже на cpp

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

no-such-file ★★★★★
()
Ответ на: комментарий от cobold

Я понимаю, но это вообще не про то. Кстати в пых завезли нативные аннотации, так что скоро все фреймворки на них переобуются видимо.

no-such-file ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.