Mudanças PHP 7.1

Entre as alterações previstas para a versão 7.1 do PHP, as que mais me chamaram atenção são:

Catching Multiple Exception Types

Atualmente caso queira tratar mais de um tipo de exceção, deve replicar o bloco catch:

<?php

try {
   // Some code...
} catch (ExceptionType1 $e) {
   // Code to handle the exception
} catch (ExceptionType2 $e) {
   // Same code to handle the exception
} catch (Exception $e) {
   // ...
}

Já de acordo com a RFC aprovada, em cada catch é possível interceptar mais de um tipo de exceção:

<?php

try {
   // Some code...
} catch (ExceptionType1 | ExceptionType2 $e) {
   // Code to handle the exception
} catch (\Exception $e) {
   // ...
}

Void Return Type

Essa alteração é praticamente uma estenção do que foi introduzido no PHP 7.0, que é a definição de tipo de retornos em funções. Só que agora estendendo para void, que deixa explícita uma função sem retorno.

function should_return_nothing(): void {
    return 1; // Fatal error: A void function must not return a value
}

function lacks_return(): void {
    // valid
}

Generalize support of negative string offsets

Habilita acesso a um caracter individual da String através de valores negativos.

$str='abcdef';
var_dump($str[-2]); // => string(1) "e"

$str{-3}='.';
var_dump($str);     // => string(6) "abc.ef"

var_dump(isset($str{-4}));  // => bool(true)

var_dump(isset($str{-10})); // => bool(false)

Support Class Constant Visibility

Permite adicionar modificador de acesso nas constantes da classe. Caso o modificador seja ocultado o valor padrão será public.

class Token {

    // Constants default to public
    const PUBLIC_CONST = 0;

    // Constants then also can have a defined visibility
    private const PRIVATE_CONST = 0;
    protected const PROTECTED_CONST = 0;
    public const PUBLIC_CONST_TWO = 0;

    //Constants can only have one visibility declaration list
    private const FOO = 1, BAR = 2;
}

Para mais detalhes sobre as mudanças no PHP 7.1:

Deptrac

No início do mês foi anunciado no blog do Symfony uma nova ferramenta da Sensio Labs. Trata-se do Deptrac, que é um analisador de código que verifica as dependências entre as camadas da sua aplicação e alerta em caso de quebra de alguma regra definida.

ModelController1

Deptrac is a static code analysis tool that helps to enforce rules for dependencies between software layers.

For example, you can define a rule like "controllers may not depend on models". To ensure this, deptrac analyzes your code to find any usages of models in your controllers and will show you where this rule was violated.

Fonte: https://symfony.com/blog/clean-software-architecture-with-deptrac

NFePHP

API para comunicação entre o emitente de NFe e os serviços dos SEFAZ estaduais. Inteiramente construído em PHP, roda em qualquer sistema operacional. NFePHP é uma API para gerenciamento das comunicações entre o emitente de NFe e os serviços dos SEFAZ estaduais. Inteiramente construído em PHP para rodar sob qualquer sistema operacional.

Fonte: https://github.com/nfephp-org/nfephp

Piwik

Piwik é uma alternativa opensource ao Google Analytics, escrito em PHP e que utiliza MySQL como base de dados.

Piwik is a full featured PHP MySQL software program that you download and install on your own webserver. At the end of the five minute installation process you will be given a JavaScript code. Simply copy and paste this tag on websites you wish to track and access your analytics reports in real time.

Piwik aims to be a Free software alternative to Google Analytics, and is already used on more than 1,000,000 websites. Privacy is built-in!

Jobby

Com Jobby você gerencia os jobs através do PHP sem necessidade de alterar a crontab.

Install the master jobby cron job, and it will manage all your offline tasks. Add jobs without modifying crontab. Jobby can handle logging, locking, error emails and more.

Basta apenas uma entrada principal na crontab.

* * * * * cd /path/to/project && php jobby.php 1>> /dev/null 2>&1

Funcionalidades:

  • Maintain one master crontab job.
  • Jobs run via PHP, so you can run them under any programmatic conditions.
  • Use ordinary crontab schedule syntax (powered by the excellent cron-expression).
  • Run only one copy of a job at a given time.
  • Send email whenever a job exits with an error status.
  • Run job as another user, if crontab user has sudo privileges.
  • Run only on certain hostnames (handy in webfarms).
  • Theoretical Windows support (but not ever tested)

Pagekit CMS

Divulgado hoje no blog do Symfony o novo CMS PageKit, que tem o código-fonte aberto e é construído utilizando os components do Symfony. Segundo definição do site do projeto, o PageKit é um CMS moderno, intuitivo, modular, e flexível.

Pagekit is an Open Source CMS built with several Symfony Components. Recently we had the opportunity to meet with Jan Schönherr, one of its lead developers, and we talked with him about Symfony and Pagekit.

Fonte: https://symfony.com/blog/pagekit-an-open-source-cms-built-with-symfony-components

PuPHPet

Puphpet é uma ferramenta gráfica para gerar configuração de máquinas virtuais para o desenvolvimento web. Suporta Vagrant e Puppet.

A simple GUI to set up virtual machines for Web development.