Skip to content

Instantly share code, notes, and snippets.

@aalvesjr
Last active September 26, 2015 00:15
Show Gist options
  • Save aalvesjr/c0f925202e78c392e216 to your computer and use it in GitHub Desktop.
Save aalvesjr/c0f925202e78c392e216 to your computer and use it in GitHub Desktop.
Testando PHP 7
CentOS 7 and compatible
Create a new repo file /etc/yum.repos.d/php7-nightly.repo and insert following lines:
[zend-php7]
name = PHP7 nightly by Zend Technologies
baseurl = http://repos.zend.com/zend-server/early-access/php7/repos/centos/
gpgcheck=0
run:
yum install php7-nightly
To install PHP 7 Beta 1 run:
yum install php7-beta1
Apache
To use with Apache, first install httpd, then copy the required module:
cp /usr/local/php7/libphp7.so /etc/httpd/modules/
Add the following lines to /etc/httpd/conf/httpd.conf:
LoadModule php7_module /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Ubuntu 14.04, Debian 8 and compatible
Add Zends PHP7 early access repo:
echo "deb http://repos.zend.com/zend-server/early-access/php7/repos ubuntu/" >> /etc/apt/sources.list
To install PHP7 nighly build:
apt-get update && apt-get install php7-nightly
To install PHP 7 Beta 1 run the following:
apt-get update && apt-get install php7-beta1
PHP7 will be installed to /usr/local/php7
Apache
To use with apache, first install apache2, then copy the required modules and libs:
cp /usr/local/php7/libphp7.so /usr/lib/apache2/modules/
cp /usr/local/php7/php7.load /etc/apache2/mods-available/
Then, edit /etc/apache2/apache2.conf , and add these lines:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
After that run these commands to switch to mpm_prefork and enable the PHP mpm module:
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php7
fonte: http://php7.zend.com/repo.php
Lembra do nosso bom e velho amigo MySQL? É um dos SGBDs mais utilizados com PHP.
Porém, como há tempos eu venho dizendo, as funções mysql_* (como mysql_connect ou mysql_query) deveriam ser evitadas. Desde o PHP 5.5 elas eram consideradas obsoletas.
Pois bem, elas não existem mais!
Veja com seus próprios olhos.
Crie este script:
<?php
mysql_connect( 'localhost', 'root', '' );
Vamos chamá-lo de mysql.php.
Agora execute-o no terminal:
php mysql.php
Você verá esta mensagem:
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in mysql.php:3
Stack trace:
#0 {main}
thrown in mysql.php on line 3
Ou seja, agora você deverá usar MySQLi ou PDO.
Eu recomendo PDO e você já deve saber o motivo. Se não sabe, leia este meu artigo sobre como usar PDO com MySQL.
Agora vamos falar sobre Expressões Regulares (Regex)
Você costuma usar funções como ereg, eregi, ereg_replace e semelhantes?
Espero que não...
Elas eram obsoletas desde o PHP 5.3.
E, assim como as funções mysql_*, as funções ereg_* e eregi_* também foram REMOVIDAS no PHP 7.
Faça o teste:
<?php
ereg( '^[a-z]$', 'php7' );
Saída:
Fatal error: Uncaught Error: Call to undefined function ereg() in ereg.php:3
Stack trace:
#0 {main}
thrown in ereg.php on line 3
Qual é a solução?
Simples: usar funções preg_*, como preg_match, preg_replace e semelhantes.
Veja todas elas neste link.
Existem poucas diferenças. O principal é que as funções preg_* exigem delimitadores e, consequentemente, permitem utilizar alguns modificadores, como o "i", que torna a ER case-insensitive. Ou seja, se você usava eregi_*, precisará sempre usar o modificador "i" nas ERs com funções preg_*.
Há algumas outras funções e recursos removidos do PHP 7. Eles são poucos usados, então não falarei deles aqui. Mas você pode ver a lista no RFC oficial sobre recursos obsoletos.
Antes de terminar a aula de hoje, preste atenção nas mensagens de erro que vimos hoje:
Fatal error: Uncaught Error: Call to undefined function ...
Note o "Uncaught Error".
Parece familiar?
Se você já trabalhou com Exceções, esse "Uncaught" é seu conhecido.
No PHP 7, os erros fatais (Fatal Errors) se tornaram um tipo de exceção e podem ser "pegos" usando um bloco try/catch.
Mas isso é tema para outra aula. Vamos ver isso com calma logo logo.
Qualquer dúvida, só responder o email, que eu te ajudo.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment