¿Cuál es la mejor manera de agregar un script PHP a JavaScript?

Técnicamente hablando, no es posible, pero puede aproximarlo con soluciones alternativas.

La razón por la que no es técnicamente posible es porque PHP se ejecuta del lado del servidor, mientras que JavaScript se ejecuta del lado del cliente en el navegador. No hay un intérprete de PHP en el navegador, por lo que si desea ejecutar un fragmento de código PHP y hacer que interactúe con su JavaScript, debe ser a través de algún tipo de interacción con el servidor.

La forma más común de hacerlo es a través de una solicitud AJAX. Si hay un código que necesita ejecutarse en PHP, haga que su JavaScript llame al servidor y solicite el resultado. ¡NUNCA envíe código PHP sin procesar al servidor para su ejecución!

Aunque podría ser posible ejecutar cadenas de código PHP en el servidor a través de la función eval (), estaría abriendo el servidor a una vulnerabilidad de seguridad masiva. Cualquier hacker puede simplemente llamar a esa solicitud con su propio código PHP para hackear el servidor y tomar todos sus datos, eliminar todo su sitio o secuestrarlo para enviar SPAM, etc.

Si absolutamente debe ejecutar código PHP porque no puede generar el resultado deseado en JavaScript (por ejemplo, está utilizando una biblioteca PHP patentada o un módulo apache que no existe para JS), su llamada AJAX debe solicitar la función un nombre o algún tipo de alias, junto con sus parámetros. En el lado del servidor, debe filtrar todos los parámetros de entrada para los intentos de inyección de pirateo y devolver solo los datos del resultado.

Aquí hay un ejemplo básico usando jQuery y PHP a través de JSON:

Servidor (PHP):

<? php

$ action = isset ($ _ POST [‘acción’])? $ _POST [‘action’]: ”;

if ($ action == ‘addNumbers’) {
$ params = isset ($ _ POST [‘params’])? $ _POST [‘params’]: ”;
$ números = isset ($ params [‘números’])? $ params [‘números’]: array ();
$ resultado = array ();
$ resultado [‘total’] = array_sum ($ números);
echo json_encode ($ resultado);
salida;
}

?>

Cliente (usando jQuery):

$ .post (“server.php”, {
acción: ‘addNumbers’,
parámetros: {
números: [1,2,3]
}
},
función (resultado) {
alerta (‘la suma es’ + resultado.total);
}, “json”
);

No puede agregar PHP a Javascript directamente: PHP se interpreta en el lado del servidor y nunca llega al lado del cliente donde se interpreta Javascript. Así que supongo que lo que quiere decir es que desea insertar la salida de algunos PHP en algunos Javascript antes de enviarlos al cliente. La mejor manera de hacerlo es no hacerlo en primer lugar . Si cree que tiene una situación en la que tiene que hacer esto, tiene un problema arquitectónico.

Si está tratando de obtener algunas variables de PHP a JS y no hay una manera sensata de pasarlas a través de HTML (como con un atributo de datos en un elemento relacionado, un elemento de formulario oculto o una metaetiqueta), una solicitud asincrónica Sé una buena elección. Haga que su JavaScript haga una solicitud XHR a un script PHP que genere los datos que necesita como un objeto JSON o XML.