
Em 17 de maio, a primeira conferência profissional para desenvolvedores de PHP PHP Russia 2019 foi realizada no Moscow Infospace; depois de uma longa pausa, eles receberam uma plataforma totalmente terrestre para eles; no
anúncio, comparamos com o estádio, que o peychpishnikov, uma das equipes da "principal divisão de TI", não possuía. E o "estádio" conheceu sua primeira temporada pelo menos com dignidade, com a diferença do protótipo de futebol de que é difícil fazer uma separação estrita entre jogadores e torcedores.
Durante o período da “grande glaciação de congelamento de torta” - grandes conferências sobre PHP na Rússia não são realizadas há menos de nove anos - a comunidade em torno do idioma precisa desse local de reunião. Ao mesmo tempo, grandes esperanças foram depositadas no evento, e a tarefa de agradar a todos os interessados foi vista como extraordinária. Mas o medo tem grandes olhos e a paranóia saudável tem uma boa visão periférica: a experiência dos eventos de TI do nosso lado organizador, juntamente com o poder da “magia PHP” do lado do comitê do programa e a autoridade de seus participantes do setor, nos possibilitou organizar um evento maduro na primeira tentativa.
Quase 500 pessoas chegaram ao PHP na Rússia. O público on-line também era bastante grande - várias centenas de espectadores conectados. A base do programa foi “cimentada” 22 relatórios, incluindo cinco de eminentes oradores estrangeiros, bem como três reuniões e apresentações no formato improvisado Unconference em um fluxo separado.

A conferência ocorreu em
três correntes , e escolher para onde ir seria doloroso se não fosse a oportunidade de assistir posteriormente às transmissões de tudo o que aconteceu no programa principal.
Alexander Makarov, co-organizador da conferência
- Nós, no comitê do programa, pensamos por um longo tempo e finalmente sacudimos a grade para que o quebra-cabeça se desenvolvesse: abandonamos a idéia de colocar os falantes de inglês em um fluxo separado, procuramos equilibrar os relatórios. Relativamente falando, para que os mais atingidos fiquem paralelos e ninguém atraia a maioria da audiência. É claro que havia conectores conceituais em cada faixa: por exemplo, logo após o discurso de Dave Liddament, que, falando sobre a análise estática do código PHP, prestou muita atenção ao PHPStorm, o relatório de Kirill Smelov, onde o dispositivo para esse IDE foi resolvido, começou na mesma sala uma história sobre inovações no PHP 7.4 foi seguida por uma apresentação no 8.0.
Sobre tópicos
Como
foi planejado , a maior parte das performances foi construída em torno de tópicos específicos do PHP, em grande parte muito, muito hardcore.
Entre os principais vetores de interesse da conferência, destacaram-se o futuro da própria linguagem, sua arquitetura e padronização, programação assíncrona em PHP, suas melhores práticas e recursos implícitos, trabalhar com estruturas específicas e até aprendizado de máquina usando a pilha PHP.

Documentos principais
O comitê do programa abordou escrupulosamente a seleção de relatórios, portanto, foi problemático identificar os “mais legais”: não havia nenhum bloqueio de aprovação no programa, pelo menos de acordo com os resultados do primeiro feedback dos convidados. Então, como exemplo, tivemos que destacar alguns de:
- os mais lotados;
- o mais esperado;
- o mais rico de surpresa.

Nikita Popov: Propriedades digitadas e muito mais. O que está chegando no PHP 7.4?

Nikita Popov, um dos desenvolvedores principais mais ativos e proeminentes do PHP, merecidamente entrou nas cabeças da conferência. Seu relatório é um cruzamento entre um changelog com comentários dos autores (mais exemplos de código) e uma excursão visionária ao futuro do idioma. Consistente e sucintamente, Nikita explicou o que nos espera em PHP na próxima versão e além.
De acordo com o cronograma estimado, o lançamento alfa da versão 7.4 ocorrerá em 6 de junho de 2019 e o lançamento do 7.4 GA será lançado em 21 de novembro. Bem, um ano depois, em dezembro de 2020, os “oito” divulgados por rumores serão lançados.
A principal coisa que será implementada no PHP 7.4:
- propriedades digitadas;
- FFI - Foreign Function Interface, para trabalhar com funções externas em C;
- funções de seta;
- - pré-carregamento;
- - operador
??=
; - - tipos de retorno covariante;
- - elos fracos (WeakReference);
- - adicionando um operador
…
para matrizes.
Talvez a inovação mais esperada na próxima versão seja a capacidade de definir tipos para propriedades de classe. Vale ressaltar que essa propriedade deve necessariamente ser explicitamente inicializada e, se seu valor padrão não for especificado, não será nulo - não, em tal situação, uma exceção será lançada. Além disso, entre outras coisas, as propriedades digitadas ajudarão a traduzir para o PHP algo como o que ainda falta na linguagem dos tipos de interseção. Em outras palavras, especifique vários tipos de argumentos de uma só vez.
A segunda grande mudança no PHP 7.4 é a estréia das funções de seta. Essas são funções anônimas de uma linha - inúteis, como alguns desenvolvedores têm certeza, açúcar sintático, embora outros achem o mesmo útil.
Você também não pode negligenciar o operador
??=
, que anteriormente estava ausente no idioma. Aqui está o que ele faz: se o parâmetro à esquerda não existir na expressão ou for nulo, será atribuído o valor do parâmetro à direita.
Das prováveis inovações que ainda estão em discussão, os genéricos foram mencionados. No entanto, a Nikita imediatamente fez uma reserva de que sua implementação completa não é uma tarefa fácil.
Quanto aos recursos que são considerados obsoletos na versão 7.4, havia vários deles. O processamento do operador ternário da esquerda para a direita foi jogado no caixote do lixo da história - no G8 essa sintaxe gera um erro. A prioridade do operador de concatenação também será reduzida: se for usado junto com os operadores de adição ou subtração, eles serão processados primeiro.

No final do discurso, Nikita foi inundado com perguntas que ele tentou responder o mais objetivamente possível, graças às quais os ouvintes receberam várias dicas valiosas.
Nikita Popov:
- Eu acho que as coleções digitadas serão na forma de genéricos.
Dmitry Stogov: A coisa mais interessante no PHP 8

A linha, iniciada por Nikita Popov, foi continuada por outro importante colaborador do núcleo do PHP - Dmitry Stogov, engenheiro chefe da Zend Technologies. Ele falou sobre um futuro um pouco mais distante da linguagem - sobre a versão sacramental 8.0. Nos últimos anos, ele se concentrou em melhorar o desempenho do PHP e construiu sua história com a mesma ênfase.
Durante uma década e meia, a linguagem "acelerou". Ganhos significativos de desempenho foram alcançados nas versões 5.1 e 7.0. Na era dos Sete, houve um crescimento suave: aumentar a velocidade de execução do código de versão para versão não era radical. No entanto, o PHP 8.0 promete aos desenvolvedores uma sacola de presente. Eles estão esperando por muitas coisas interessantes.
Dizemos "interessante" - significa JIT? Na verdade não. Sim, de fato, a compilação dinâmica just-in-time promete um aumento de desempenho na versão 8.0, mas ... somente em testes sintéticos, em aplicativos reais, até uma desaceleração é possível, embora insignificante. No entanto, melhorias são possíveis.
Então a "carne" começou: Dmitry aprofundou-se no básico do PHP e do JIT, explicando ao longo do caminho "o que há de errado com o JIT" e compartilhou com o público como o JIT, o mecanismo de pré-carregamento e o FFI e para devido ao que eles são projetados para aumentar o desempenho do código PHP.
A tríade acima abre novos usos para o PHP. Será possível escrever extensões diretamente no PHP, conectar bibliotecas C de terceiros, criar protótipos sem trabalho extra ...
Mas, como engenheiro honesto, Dmitry não apenas delineou as possibilidades estonteantes que estarão disponíveis na oitava versão do idioma, mas também alertou sobre suas deficiências, mas "não otimização". Obviamente, é ótimo que os scripts de pré-carregamento sejam carregados na inicialização do PHP; no entanto, eles não podem ser substituídos sem reiniciar, e alguns podem não funcionar com o pré-carregamento conforme o esperado. Obviamente, é maravilhoso quando, graças à FFI, você pode operar em estruturas de dados definidas em C, e a API em si é simples e agradável, apenas a FFI abre mil novas maneiras de dar um tiro no pé e seu desempenho sem o JIT é relativamente baixo.
Ao mesmo tempo, há mais vantagens da combinação de tecnologias que estão na base do G8 do que menos. Além disso, muitos dos recursos mencionados por Dmitry no relatório já podem ser sentidos na versão 7.4.
Alexander Lisachenko: Escola de magia PHP

A sala completa após o almoço foi reunida por Alexander Lisachenko, chefe de desenvolvimento web da Alpari, membro do comitê de programa do PHP Russia 2019, criador e desenvolvedor líder da estrutura Go! Aop. Ele ofereceu uma olhada na linguagem através de um prisma - nossa legenda não mente! Magia.
Assim como a intuição é uma lógica oculta da razão, a mágica em uma linguagem de programação é a exploração de recursos anormais ou pouco conhecidos dessa linguagem, com base em um profundo conhecimento de sua estrutura interna, “distorções” e brechas.
Alexander demonstrou como diversão vários truques que muitos dos que estavam sentados no corredor (e havia uma minoria de juniores entre eles) explodiram o cérebro. O orador gradualmente se aproximou de como usar os ajustes que ele descobriu ao longo dos anos pesquisando profundamente o PHP, para o benefício da codificação.
Métodos mágicos, formas não padronizadas de acessar propriedades, alterar contextos, filtros de fluxo - tudo isso e muito mais "maestro Lysachenko" separaram de um ponto de vista pragmático. Embora fosse impossível não notar a beleza paradoxal do que os odiadores do PHP preferem chamar de falhas inatas. Nós não sabemos, não sabemos ... Nós gostamos.
Alexander prestou atenção especial à programação orientada a aspectos no PHP, que em total conformidade com o princípio da prática que você prega usa na cauda e na crina, e que da mesma forma lançou as bases para o Go! Aop.
Dave Leading: Análise estática avançada prática

Dave Liddament, diretor da Lamp Bristol, compartilhou com o público suas melhores práticas em relação à análise estática avançada do código PHP. Como autor da ferramenta de código aberto SARB, ou Static Analysis Results Baseliner, ele desenvolveu um tipo de roteiro para o público implementar análises estáticas, para que todos pudessem emprestar suas soluções e técnicas de revisão que ele julgasse adequadas à sua própria pilha e às suas necessidades. Ou para usar o relatório como um mini-guia holístico para implementar a análise estática.
Enfatizando a importância do ambiente de desenvolvimento como parte do arsenal para a análise estática, nosso convidado elogiou sinceramente o PHPStorm, que pareceu surpreender agradavelmente o moderador da seção, Roman Pronsky, da JetBrains, que supervisiona esse IDE em sua empresa.
Dave começou com a necessidade de verificações básicas:
- Linting.
- Verifica a conformidade com os padrões de programação (inclusive para avaliar a consistência do código gravado dentro do comando), por exemplo, usando o PHP CS Fixer .
- Análise de código de segurança. Como ferramenta, o palestrante recomendou o Security Checker do SensioLabs, os autores do Symfony.
- Verifica esquecido var_dump.
- Verificação automática de sincronização composer.json e composer.lock (validação do compositor)
Essas e muitas outras ferramentas para análise de código estático podem ser encontradas por qualquer pessoa em um glorioso
repositório do GitHub .
Para os adeptos do symfony, o relatório foi duplamente útil: para aqueles que usam a estrutura em seu trabalho, ele deu várias dicas e truques para implementar a análise estática de código.
Além disso, Dave investigou as nuances do uso de ferramentas mais avançadas, principalmente o Salmo, o Phan e o PHPStan. Ele fez uma ênfase separada no trabalho nas condições de integração contínua (e também aconselhou
alguns ouvintes nas
ferramentas ).
A classificação de bugs e “quase bugs” de Dave também foi informativa, à luz da análise estática do código e com detalhes de exatamente como eles atingiram o desenvolvimento. Por exemplo, mesmo que o tipo de parâmetro seja especificado incorretamente e não cause um erro no seu fluxo de trabalho, no entanto, à medida que o projeto se torna mais complexo, ele pode se transformar facilmente em um rake que outro membro da equipe fará. De acordo com as estatísticas apresentadas na apresentação, esses defeitos de capacidade de resolução (falhas reveladas durante a evolução do código) são responsáveis por aproximadamente 80% dos erros que aparecem durante a revisão do código.
E também ...

É difícil delinear o programa da conferência: todo o conteúdo da conferência foi útil, no entanto, uma lista minuciosa de todos os 22 relatórios, mesmo com o resumo mais curto possível de suas teses, transformaria o relatório em uma folha ilegível, portanto, vamos mencionar apenas mais alguns.
Mantendo uma promessa, Kirill Smelov, da JetBrains, mergulhou nos detalhes do dispositivo interno PHPStorm, incluindo como o PHP estava envolvido na criação do IDE.
O discurso de Anton Titov da SpiralScout LLC acabou sendo um caso raro no âmbito do programa da conferência, quando foi feito um desvio temático do curso "estritamente em PHP", no entanto, sua história sobre o desenvolvimento de aplicativos PHP / Go híbridos usando o RoadRunner foi definitivamente bem-sucedida.
Tomáš Votruba, um delegado tcheco, telefonou para casa cheia, informando detalhadamente sobre como tornar a refatoração de grandes matrizes de código legado menos dolorosa e acelerar o processo várias vezes, usando a decisão de sua autoria - Reitor.
Dmitry Eliseev (ElisDN) leu o relatório “OOP competente: Organização da lógica de negócios confiável”, no qual examinou, entre outras coisas, como separar a interface do usuário e a lógica de negócios da mente.
Inconferência e mitaps
No final do programa principal, em vez de um dos blocos de construção, o formato Unconference foi testado - um análogo do "microfone aberto": qualquer um poderia sair e fazer um mini-relatório sobre um tópico que lhe parecia interessante. O piloto de um “stand-up” de TI foi um sucesso: Alexander Makarov falou sobre o que provavelmente é o Yii3, um convidado do Badoo compartilhou uma história, como ele e seus colegas fizeram um proxy para o Xdebug e, finalmente, outra apresentação espontânea foi dedicada aos recursos do trabalho com impressoras de etiquetas especializadas e verificar e estragar tudo isso com PHP.

Em uma quarta sala separada, após o almoço, um conjunto de mitaps aplicados começou (e eles também encontraram seu público):
- "Laravel vs Symfony: uma comparação entre incomparável."
- "Como contribuir com o Symfony e por que fazê-lo."
- "Como usar o Yii2 no Enterprise? Obtenha as melhores práticas do Symfony! ”
Por sua vez, os parceiros da conferência não organizaram um “cemitério de estantes”, mas um movimento discreto, divertido e apropriado. O ManyChat tinha testes PHP online, um concurso para criar e desembaraçar bots e palavras cruzadas com expressões regulares. No canto, o Badoo corta o Tech Alias - uma versão de TI dos desktops do Alias. Bem, no estande da Paxful, os visitantes aguardavam “elefantes roxos atípicos”, adesivos e doces da Estônia.


"Protegendo" o passado
A Afterparty se tornou um agradável caso de cooperação dentro da comunidade em todos os aspectos: os organizadores organizaram o evento juntamente com os iniciadores da reunião sobre Beer PHP. No final do programa principal, aqueles que queriam, e entre eles um número razoável de palestrantes, avançaram para o Outubro Vermelho, a fim de continuar os debates na “atmosfera artesanal”.

O que pensamos dos “elefantes 2020”
Se for muito conciso, então o PHP Russia 2020 - para ser. Além dos formatos básicos que provaram sua relevância, certamente haverá novos para a próxima conferência. O changelog do Comitê de Lista de Desejos e Organização ainda está em processo de preenchimento, mas algo já está claro com certeza.
- Sem dúvida, continuaremos a fazer o Unconference: as pessoas estão felizes com o formato e pedem mais.
- Vamos tentar pedir um pedaço de elefantes. No PHP Russia 2019, eles não eram: aconteceu que os direitos a eles pertencem aos caras da França e são muito lentos - eles precisam ser pedidos por 4-6 meses.
- Certamente traremos o mesmo Marco Pivetta, que esteve em nosso programa, mas caiu no último momento por razões fora de seu controle. Também temos opiniões do pai de Symfony Fabien Potencier. No final, tentaremos trazer Rasmus Lerdorf também: o chamamos para a primeira conferência, mas ele teve interseções com outros eventos.
Em suma, fique atento!

PS Finalmente - um pequeno bônus. Como alguns de vocês sabem,
Konstantin Burkalev , um residente nativo de Habrovsk e membro do comitê do programa PHP Rússia, também hospeda podcasts de TI. E a próxima
104ª edição de seu SDCast é uma entrevista que ele tirou de dois oradores altamente merecedores da conferência, Anton Shabovty e Anton Morev. Ele conversou com o primeiro sobre PHP assíncrono, multitarefa e processos PHP de longa duração, com o segundo sobre a API Rest e GraphQL, os prós e contras de abordagens, áreas e tarefas de aplicação. Tenha uma boa audição!