3
respostas

Integração Java Script com PHP

Olá,

Estou fazendo cursos atualmente de Java Script, porém já fiz alguns também de PHP e estou com um projeto em andamento.

Meu site está funcionando com a estrutura que criei com base nos cursos de PHP com MVC. Não estou usando framework, somente estruturando o projeto em classes PHP para model, controller, view e um repository para busca e manipulação de dados.

Agora com os cursos de Java Script quero fazer algumas rotinas para otimizar o site com interações do usuário com filtros e outras coisas que estou aprendendo.

Meu desafio agora é conseguir fazer com que as classes que busco dados no banco de dados com PHP sejam usados nas páginas com Java script.

Uma das rotinas que tenho no site que busca dados de artigos e mostra na página consegui integrar fazendo com que meu controller em PHP transforme o array de dados em um JSON, assim eu faço no Java Script um fetch na url do meu controller e ele me devolve o JSON e trato ele mostrando os dados com o java script (até o momento usando conhecimentos nos cursos de PHP e java script e conseguindo fazer funcionar)

Minha preocupação é com as boas práticas, para não começar a gerar muita coisa que funcione sem um padrão de boas práticas.

Eu não trabalho na área de sistemas, mas estou engajado em um projeto pessoal e os cursos que tenho feito estão me ajudando muito a evoluir no meu conhecimento e quero ir avançando gradativamente para aprimorar meu site e ir aprendendo.

Minha dúvida agora está no seguinte:

Como tenho toda a estrutura de classes em PHP e quero usar Java Script nas páginas para mostrar e manipular os dados eu gostaria de saber se é uma boa prática eu usar nas views por exemplo, alguma rotina que eu tiver em PHP que me retorno um dado que eu quiser usar em JS, eu salvar o dado em um data atribute e depois usar com JS?

Exemplo. Tenho um usuário salvo em umsa sessão. ($_SESSION ), então recuperao ele com PHP chamando alguma função em PHP. Ao ter este dado eu salvar por exemplo em uma DIV ou outro local do HTML em uma data-user por exemplo. Esta foi uma ideia que tive, e é aparentemente pouco profissional, mas como disse, não trabalho na área, sei que funcionaria, porém estou usando esta ideia para que quem tem experiência possa me dar um direcionamento mais correto.

Não quero agora usar framework, pois estou com o projeto em andamento e evoluindo ele a medida que faço os cursos.

Solicito uma dica de como seria a melhor maneira de eu fazer com as ideias que passesi. Ficou meio longa minha postagem mas foi para tentar exemplificar a estrutura que tenho aqui.

Aqui um pedaço de código que tenho em um arquivo PHP que estou usando com view.

    if(!empty($sessaoController->recuperaUserSessao())){

                if($usuario->is_admin()){
                    ?>
                    <div>
                        <a class="artigo-list__adicionar--link" href="artigo-new"><i class='material-icons'>add_circle</i><strong>Adicionar Artigo</strong></a>
                    </div>

Neste caso hoje manipulo tudo com php e está funcionando, porém agora, para p JS precisarei saber que tipo de usuário está logado na SESSION então fiquei sem saber como ficaria melhor fazer.

Deixo registrado aqui que estou muito contente com os cursos da Alura, pois estou conseguindo realizar meu projeto aos poucos e ampliando meu aprendizado.

Agradeço o apoio.

3 respostas

Olá, Ricardo, tudo bem?

Agradeço por compartilhar suas dúvidas e experiências sobre a integração entre JavaScript e PHP.

É ótimo ver que você está empenhado em aprender e evoluir no seu projeto pessoal.

Vou te ajudar a entender algumas boas práticas para essa integração, levando em consideração a estrutura de classes em PHP que você já possui.

Primeiramente, é importante destacar que a interação entre JavaScript e PHP é bastante comum e pode ser feita de várias maneiras. Uma abordagem comumente utilizada é o uso de requisições assíncronas (AJAX) para buscar dados do servidor sem precisar recarregar a página. Essa abordagem é interessante para obter uma melhor experiência do usuário, pois permite atualizações dinâmicas no conteúdo da página sem interromper a interação.

No seu exemplo, você mencionou que conseguiu integrar uma rotina que busca dados de artigos no banco de dados usando PHP e, em seguida, transforma o resultado em um JSON para ser manipulado pelo JavaScript. Essa é uma abordagem válida e bastante utilizada, pois permite a transferência de dados de forma estruturada e compatível com o JavaScript.

No entanto, em relação à sua ideia de salvar dados em atributos de elementos HTML (como no exemplo da DIV com o atributo data-user), essa abordagem pode funcionar, mas geralmente não é considerada uma boa prática. A razão para isso é que dados sensíveis ou complexos podem se tornar facilmente acessíveis e difíceis de manter ou manipular posteriormente.

Uma alternativa mais recomendada é utilizar as requisições assíncronas para buscar informações específicas do usuário ou de outras entidades no servidor. Por exemplo, em vez de salvar o usuário em uma sessão PHP e em seguida recuperá-lo com PHP para armazená-lo em um atributo HTML, você pode fazer uma requisição AJAX para obter diretamente essas informações do servidor e tratá-las com JavaScript.

Vamos exemplificar essa abordagem. Suponha que você queira obter o tipo de usuário logado na sessão no JavaScript. Em vez de armazenar essa informação em um atributo HTML, você pode criar um arquivo PHP, como get_user_type.php, que retorna o tipo de usuário no formato JSON. Em seguida, você pode fazer uma requisição AJAX para esse arquivo e tratar a resposta no JavaScript.

Exemplo em PHP (get_user_type.php):

<?php
// Obtenha o tipo de usuário da sessão
$userType = $_SESSION['user_type'];

// Retorne o tipo de usuário como JSON
header('Content-Type: application/json');
echo json_encode(['userType' => $userType]);
?>

Exemplo em JavaScript:

// Faça a requisição AJAX
fetch('get_user_type.php')
  .then(response => response.json())
  .then(data => {
    // Manipule o tipo de usuário retornado
    const userType = data.userType;
    // Faça algo com o tipo de usuário
  });

Dessa forma, você pode obter as informações necessárias do servidor de maneira assíncrona, sem precisar armazená-las em atributos HTML. Essa abordagem mantém a separação de responsabilidades entre o PHP e o JavaScript, além de permitir atualizações dinâmicas com base nas respostas do servidor.

É importante ressaltar que a estrutura MVC que você mencionou também pode ajudar a organizar e manter um código mais limpo e modular. Se você está usando classes PHP para model, controller e view, isso é um bom sinal, pois demonstra que você está seguindo uma estrutura que favorece a manutenibilidade e a escalabilidade do seu projeto.

Caso você queira aprimorar ainda mais o seu site, é válido considerar a utilização de frameworks JavaScript, como o React, Angular ou Vue.js. Esses frameworks fornecem ferramentas poderosas para a criação de interfaces interativas e reativas, permitindo que você crie componentes reutilizáveis e melhore a experiência do usuário. No entanto, entendo que você prefira continuar com o seu projeto atual sem a introdução de um novo framework.

Espero que essas dicas possam ajudá-lo a avançar na integração entre JavaScript e PHP no seu projeto. Lembre-se de buscar sempre boas práticas, manter o código bem estruturado e buscar conhecimento através de cursos e documentações. Se você tiver mais dúvidas, estou à disposição para ajudar. Desejo bons estudos e sucesso na evolução do seu projeto!

Espero que tenha te ajudado, bons estudos!

Renan

Muito grato pela ajuda.

Me auxiliou muito a entender as boas práticas utilizadas e vou seguir tua orientação.

Vou manter a estrutura de classes em em PHP e usarei as funções assíncronas para fazer as requisições de dados para as classes PHP para utilização dos mesmos nas páginas html usando AJAX.

Realmente a ideia de usar um data-atribute acredito que funcionaria mas imaginei que não seria uma boa prática.

Enfim, sua explicação foi muito válida para eu saber o melhor caminho para continuar meu projeto. Em um futuro breve quando eu avançar nos cursos aqui na Alura farei uso dos frameworks e acredito que buscarei inicialmente um curso de React.

Muito obrigado, abraço.

Oi Ricardo, tudo bem contigo?

Eu fico feliz de ter lhe auxiliado nesse momento!

Se precisar eu estarei por aqui.

E lembre-se, em caso de problemas, dificuldades e/ou impedimentos com os projetos, ou cursos, pode contar com o fórum da Alura para lhe auxiliar.

Abraços e bons estudos.