DEV Community

Wesley Gonçalves
Wesley Gonçalves

Posted on • Edited on

PHP sem nada de Xampp e com muito Xdebug no Windows

Uma coisa que já é sabida há um bom tempo é que NÃO precisamos usar o Xampp para montarmos um bom ambiente de desenvolvimento, mas voce pode argumentar que o próprio site oficial do PHP na Instalação no Windows recomenda fazer uso dele por ser mais pratico, concordo totalmente com essa afirmativa, mas o problema é que além de PHP são instalados outra ruma de tranqueiras que são desnecessárias. Caso queira entender o motivo dessas ferramentas serem desnecessárias minha sugestão é assistir o video do Vinícius Dias de nome: XAMPP: Por Que Este Não Deve Ser seu Ambiente de Desenvolvimento. Chega de conversa fiada e vamos para a configuração.

Índice

Instalando O PHP no Windows

Para instalar o PHP no windows basta somente 3 passos, primeiro que vamos baixar os arquivos zipados no linK: PHP para windows, importante mencionar que talvez seja necessário instalar o Visual C++ Redistributable for Visual Studio, verifique antes no seu windows ele está instalado, caso contrário basta baixar neste link: Visual C++ Redistributable, instalação padrão do windows, faz next até aparecer o finish.

O próprio site explica as diferenças entre as versões disponíveis, para este exemplo vou usar o PHP 8.2 (8.2.19) com a versão VS16 x64 Thread Safe (2024-May-08 07:21:58), para a gente vamos somente baixar o arquivo .ZIP como mostrado na figura.

Image description

Feito isso, vamos agora descompactar a o zip, mas antes crie um diretório na raiz do disco C do windows, vai ficar assim "C:\php". depois da árdua tarefa descompactar um arquivo, agora entre na pasta e encontrará de cara os arquivos php.ini-development e php.ini-production , faça uma copia do arquivo php.ini-development e renomeia para ficar somente php.ini o resultado final vai ser como o da imagem.

Image description

Estamos quase lá, falta agora nossas variáveis de ambiente, pesquise no menu iniciar do windows por Editar as variáveis de ambiente.

Image description

Agora clicando em variáveis de ambiente, vamos ter a seguinte tela.

Image description

Edite a variável Path e nela coloque o caminho da pasta do php: "C:\php", seu PHP está instalado no windows, para verificar de fato se deu bom na instalação abra seu terminal e digite: php -v e o resultado é para ser.

Image description

Com isso você já pode fazer fazer seus programas com o PHP, mas aqui a gente quer colocar um ambiente de desenvolvimento arretado, então vamos configurar o gerenciador de pendencias do PHP o commposer e nossa ferramenta de debug o Xdebug.

Para instalar o composer basta fazer o baixar o executável e mais uma vez basta fazer next e depois finish. Se tudo estiver ocorrido como o desejado validamos rodando o comando.

composer -v
Enter fullscreen mode Exit fullscreen mode

E o resultado deve ser esse.

Image description

Com isso temos nosso PHP e composer devidamente instalado, agora vamos para nossa ferramenta de depuração.

Instalando o Xdebug

Caso não conheça o essa ferramenta incrível, minha sugestão é fazer uma lida rápida na Documentação do Xdebug, aqui vou fazer a instalação e uma configuração básica que tenho usado no em meu ambiente local.

Primeiro vamos baixar a dll do Xdebug para windows, acessando o link, agora tenha atenção para que a versão selecionada seja compatível com a versão de PHP usada no Windows.

Image description

Selecionada a versão correta, descompacte e mude o nome para php_xdebug.dll, em seguida adicione a extensão em C:\php\ext. Feito isso temos a extensão pronta, mas ainda precisamos habilitar para uso, fazemos isso editando o arquivo php.ini.

Pesquise dentro do php,ini por zend_extension= , provavelmente você irá encontrar algo desse tipo.

;zend_extension=opcache
Enter fullscreen mode Exit fullscreen mode

Duplique a linha e modifique para que fique agora assim.

;zend_extension=opcache
zend_extension=xdebug
Enter fullscreen mode Exit fullscreen mode

Basicamente o que estamos fazendo é habilitar/ativar o uso da extensão para nosso PHP local, mas só isso não é suficiente, precisamos acionar algumas coisas para deixar o Xdebug zero bala para o desenvolvimento. Ainda no arquivo php.ini role até o final do arquivo e acrescente o seguinte bloco.

[Xdebug]
xdebug.mode=debug,develop //controla quais recursos do Xdebug estão habilitados
xdebug.client_host=localhost //Configura o host ao qual o Xdebug conecta ao iniciar uma conexão de depuração.
xdebug.start_with_request=trigger // depuração de etapas 
xdebug.idekey=VSCODE //chave IDE que o Xdebug deve passar para o cliente ou proxy
xdebug.client_port=9003  // A porta à qual o Xdebug tenta se conectar no host remoto
xdebug.var_display_max_children=128 //Controla a quantidade de filhos do array e as propriedades do objeto são mostradas quando as variáveis ​​são exibidas com var_dump()
xdebug.filename_format=...%s%a // determina o formato com o qual o Xdebug renderiza nomes de arquivos em rastreamentos de pilha HTML
Enter fullscreen mode Exit fullscreen mode

Essas são as configurações que julgo serem suficientes para quem tá começando, mas caso queira entrar mais a fundo leia a documentação das configurações do Xdebug.

Para saber de maneira bem simples se o Xdebug foi ativado corretamente é via comando, basta abrir o terminal e fazer.

php -i
Enter fullscreen mode Exit fullscreen mode

O resultado será gigante, mas o mais importante é procurar pelo Xdebug, que deve aparecer assim.

Image description

Para finalizar essa parte, precisamos só de mais um detalhe, uma extensão para nosso navegador seja ele o Firefox ou Chrome, na extensão clique que opções e a tela apresentada será esta.

Image description

Pronto em IDE key deixe os parâmetros como na imagem Other e VSCODE, acredito que deva ter notado que esse é o mesmo valor que colocamos em nosso xdebug.idekey, agora lembre de deixar a extensão sempre ativada quando estiver depurando seu código PHP.

VScode e suas extensões

Para ser mais direto e não deixar o tutorial mais longo que o necessário, vai nas extensões do VSCODE e digita php, para inicio instala somente PHP Intelephense, PHP Debug e PHP IntelliSense.

Image description

Com tudo devidamente instalado vamos no menu lateral e clicamos no ícone de depuração ou simplesmente o comando (Ctrl + Shift + D) provavelmente você verá algo como demonstrado na imagem a seguir.

Image description

Basta agora clicar em create a launch.json file e escolha a opção PHP que o próprio VScode vai se virar para criar uma configuração para ti, aqui ele gerou isso aqui pra mim.

   "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 0,
            "runtimeArgs": [
                "-dxdebug.start_with_request=yes"
            ],
            "env": {
                "XDEBUG_MODE": "debug,develop",
                "XDEBUG_CONFIG": "client_port=${port}"
            }
        },
        {
            "name": "Launch Built-in web server",
            "type": "php",
            "request": "launch",
            "runtimeArgs": [
                "-dxdebug.mode=debug",
                "-dxdebug.start_with_request=yes",
                "-S",
                "localhost:0"
            ],
            "program": "",
            "cwd": "${workspaceRoot}",
            "port": 9003,
            "serverReadyAction": {
                "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
                "uriFormat": "http://localhost:%s",
                "action": "openExternally"
            }
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode

Para nossas necessidades atuais, basta selecionar a opção Listen for Xdebug para iniciar o processo de depuração, vamos fazer assim, crie um diretório na raiz do sistema e em seguida um arquivo index.php, como mostrado na imagem.

Image description

O diretório vendor e os arquivos composer.json e composer.lock aparecem quando instalamos dependências em nosso projeto, mas para seu exemplo não ligue para eles.

Em seu terminal navegue até o diretório que onde o arquivo index.php está localizado e basta rodar o seguinte comando para inicializar o servidor do PHP.

php -S localhost:8080
Enter fullscreen mode Exit fullscreen mode

O resultado será esse aqui.

Image description

No navegador acesse por http://localhost:8080 e o resultado esperado deve ser.

Image description

Nosso sistema está rodando perfeitamente bem e sem nada relacionado a XAMPP, viu nem foi tão difícil assim, agora para fechar de fato essa parte, vamos testar no Xdebug. Aqui eu coloquei um breackpoint na linha 2 em seguida inicializamos o debug do VCcode e damos um F5 na pagina http://localhost:8080

Image description

Se para ti apareceu uma imagem semelhante a que temos acima, podemos ter certeza que nosso ambiente com servidor local de PHP e ferramenta de depuração estão prontos para desenvolvimento.

Usando o SQLite

Para incio de conversa precisamos fazer a instalação do sqllite, acessando o link, selecione a terceira opção.

Image description

Semelhante a instalação do PHP, criamos um diretório na raiz do sistema de nome sqlite em seguida descompacte os arquivos nesta pasta e agora basta editar o PATH e apresentar a rota do diretório C:\sqlite. Para validar se está tudo funcionando bem basta rodar o comando.

sqlite3
Enter fullscreen mode Exit fullscreen mode

Image description

Precisamos agora fazer um ajuste em nosso php.ini para suportar o sqlite, então edite o arquivo para que fique com as extensões habilitadas como demonstrado a seguir.

extension=pdo_sqlite
extension=sqlite3
Enter fullscreen mode Exit fullscreen mode

Agora vamos criar um "projeto" usando para demonstrar o funcionamento do PHP com um banco de dados, fizemos uso do SQLite pelo simples fato de que ele cria somente um arquivo onde fica toda a estrutura necessária para nossas chamadas SQL.

Image description

Nosso index.php vai ficar assim.

require __DIR__ . '/../vendor/autoload.php';

use Database\Config;
use Database\SQLiteConnection;

try {
    $connection = new SQLiteConnection(Config::PATH_TO_SQLITE_FILE);
    $pdo = $connection->openConnect();
    echo "Conectado com sucesso ao banco de dados SQLite.";
} catch (\PDOException $e) {
    echo "Erro de conexão: " . $e->getMessage();
} catch (\Exception $e) {
    echo "Erro: " . $e->getMessage();
}
Enter fullscreen mode Exit fullscreen mode

O arquivo config.php será responsável por registrar a localização do arquivo do banco.

namespace Database;

class Config {


    const PATH_TO_SQLITE_FILE =  __DIR__ . '\db\phpsqlite.db';
}
Enter fullscreen mode Exit fullscreen mode

E por ultimo o SQLiteConnection.php fica responsável por estabelecer a conexão de fato com o SQlite.

namespace Database;

use PDOException;

class SQLiteConnection {

    private $pdo;

    private $pathToSQLiteFile;

    public function __construct($pathToSQLiteFile) {
        if (!file_exists($pathToSQLiteFile)) {
            throw new \Exception("Arquivo de banco de dados não encontrado: " . $pathToSQLiteFile);
        }
        $this->pdo = new \PDO("sqlite:" . $pathToSQLiteFile);
        $this->pathToSQLiteFile = $pathToSQLiteFile;
    }

    public function openConnect() {
        try{
            if($this->pdo==null){
              $this->pdo = new \PDO("sqlite:" . $this->pathToSQLiteFile,"","",array(
                    \PDO::ATTR_PERSISTENT => true
                ));
            }
            return $this->pdo;
        }catch(PDOException $e){

            print "Error in open DB:  ".$e->getMessage();
        }
    }
    public function getPDO() {
        return $this->pdo;
    }
}
Enter fullscreen mode Exit fullscreen mode

Antes de testar, vamos criar o arquivo para nosso banco de dados, tá mais para um tamborete de dados, navegue até o diretório de seu projeto e execute o comando.

sqlite3 database/db/phpsqlite.db
Enter fullscreen mode Exit fullscreen mode

Agora no shell do SQLite vamos criar uma tabela de exemplo e assim é criado nosso arquivo de banco de dados.

CREATE TABLE example (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);
Enter fullscreen mode Exit fullscreen mode

em seguida rode o comando.

.exit
Enter fullscreen mode Exit fullscreen mode

Antes de fazer o nosso teste de conexão com o banco precisamos fazer o mapeamento de nossos aquivos via composer, para isso basta criar o arquivo composer.json na raiz do projeto ele deve ficar assim

{
    "autoload": {
        "psr-4": {
            "App\\": "public/",
            "Database\\": "database/"
        }
    }
}
Enter fullscreen mode Exit fullscreen mode
composer  dump-autoload  
Enter fullscreen mode Exit fullscreen mode

Se tudo estiver ocorrido como o esperado, teremos a saída

Generating autoload files
Generated autoload files  
Enter fullscreen mode Exit fullscreen mode

depois disso essa será a organização de seu diretório.

Image description

agora finalmente chegamos ao fim, navegue até o diretório "C:\project-php\public" e execute o comando.

php -S localhost:8080
Enter fullscreen mode Exit fullscreen mode

em seu navegador o resultado deve ser este:

Image description

Agora, você tem um ambiente de desenvolvimento devidamente configurado, para uma leitura complementar ficar o link do PHP do jeito certo.

Top comments (0)