Diferencia entre revisiones de «Usuario:ManuelRomero/php»

De WikiEducator
Saltar a: navegación, buscar
(Usar linter en php)
 
(34 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 
{{MRM_Web|Title=Explorando la red|
 
{{MRM_Web|Title=Explorando la red|
 +
*https://phppot.com/ Artículos interesantes sobre php
 
*https://www.laraveltip.com/explotando-las-mejoras-de-php-en-cada-version/
 
*https://www.laraveltip.com/explotando-las-mejoras-de-php-en-cada-version/
 +
*https://www.php-fig.org/
 +
*jira for php https://github.com/lesstif/php-jira-rest-client
 +
*Nuevas versión https://www.php.net/releases/
 +
*Apuntes (muy bueno) https://aitor-medrano.github.io/dwes2122/
 +
*Proxy pattenr en php https://github.com/Ocramius/proxy-pattern-in-php
 
}}
 
}}
https://www.php-fig.org/
+
<br />
 +
===Controlando la salida que genera php===
 +
;ob_start
 +
https://www.php.net/manual/es/ref.outcontrol.php
 +
https://desarrolloweb.com/articulos/control-de-salida-php.html
 +
 
 +
===Seguridad en la web===
 +
 
 +
https://owasp.org/
 +
;Web donde se recoge, entre otras cosas un documento internacionalmente reconocido con
 +
los 10 riesgos de seguridad más importantes en la actualidad en aplicaciones web.
 +
===API===
 +
 
 +
https://medium.com/the-era-of-apis/how-to-use-an-api-with-php-complete-beginners-guide-4283f9f8d9b3
 +
https://docs.rapidapi.com/docs/api-pricing
 +
===Para bind_param===
 +
*Usar el método como una llamada callback  usando la función del sistema  ''''call_user_func''''
 +
*https://www.php.net/manual/es/function.call-user-func-array.php
 +
<source lang=php>
 +
$con = new mysqli(...);
 +
$stmt = $con->stmt_init ();
 +
$sentencia = "Select * from tabla where c1=?, and c2=?";
 +
$stmt->prepare($sentencia);
 +
$tipos ="ss";
 +
$parametros  =[$tipos, $v1, $v2];
 +
if ( call_user_func_array( [$stmt, 'bind_param'], ( $parametros ) ) === false )
 +
    echo "OK";
 +
else
 +
    echo "No ok!!";
 +
</source>
 +
===Usar el operador de desempaquetado o splat operator ... ===
 +
https://www.php.net/manual/en/migration56.new-features.php#migration56.new-features.splat
 +
<source lang=php>
 +
$con = new mysqli(...);
 +
$stmt = $con->stmt_init ();
 +
$sentencia = "Select * from tabla where c1=?, and c2=?";
 +
$stmt->prepare($sentencia);
 +
$tipos ="ss";
 +
$parametros  =[$v1, $v2];
 +
$stmt->bind_param($tipos, ...&$parametros)
 +
</source>
 +
Lo que realiza este operador especificado con los tres puntos '''''...''''', es extraer cada uno de los elementos del array y ponerlos como una lista de valores 
 +
<source lang=php>
 +
$stmt->bind_param($tipos, ...&$parametros)
 +
</source>
 +
Tras desempaquetar $parametros, obtendríamos
 +
<source lang=php>
 +
$stmt->bind_param($tipos, &$v1, &$v2)
 +
</source>
 +
 
 +
===Realizar solicitud curl===
 +
https://superuser.com/questions/149329/what-is-the-curl-command-line-syntax-to-do-a-post-request
 +
*Muy interesante de de lazy (copiar del inspect element que ofrece el navegador)
 +
===Jupyter para php===
 +
* Investigar cómo usando '''''conda''''' puedo crear un entorno de php y crear con jupyter un curso/documentación con su nootebook
 +
{{Tip|Es una pasada}}
 +
https://github.com/Litipk/Jupyter-PHP
 +
https://anaconda.org/auto/php
 +
https://litipk.github.io/Jupyter-PHP-Installer/
 +
 
 +
===Xdebug===
 +
*Habilitar deshabilitar el módulo de xdebug en php (Par instalar conda de php  necesito que esté deshabilitado)
 +
sudo phpenmod -s cli xdebug //habilita
 +
sudo phpdismod -s cli xdebug //Deshabilita
 +
*Rebotar luego el servicio
 +
===Vld: ver el código compilado por php===
 +
https://gist.github.com/nikic/6699370
 +
http://blog.golemon.com/2008/01/understanding-opcodes.html
 +
paquete vld http://pecl.php.net/package/vld
 +
https://www.programmersought.com/article/1405109883/
 +
===Vesta===
 +
;Scricpt para crear usuarios en vesta
 +
Crear un fichero de texto con los datos de usuario mail y dominio llamado por ejemplo usuairos.txt
 +
 
 +
<source lang=bash>
 +
#! /bin/bash
 +
 
 +
while read user mail web
 +
do
 +
./v-add-user $user $user $mail
 +
./v-add-web-domain $user $web
 +
done < /home/manuel/usuarios.txt
 +
</source>
 +
;Bug con phpmyadmin  en vesta
 +
https://forum.vestacp.com/viewtopic.php?f=14&t=10307
 +
*Instalar laravel en vesta
 +
https://paraisolinux.com/instalar-laravel-vesta-panel/
 +
 
 +
===Gestionar QR desde php===
 +
https://sourceforge.net/projects/phpqrcode/files/latest/download
 +
 
 +
===heroku: App para apicaciones de php en la nube===
 +
https://dashboard.heroku.com/apps/mrmprobando/deploy/heroku-git
 +
 
 +
===Crear un test===
 +
*Creo una carpeta llamada test
 +
*Agrego en el composer.json del proyecto
 +
 
 +
*Escribo un directorio llamado '''''test'''''
 +
*Creo una clase con el nombre de la clase que quiero testear terminada en test, extiende de
 +
https://ricardogeek.com/como-realizar-pruebas-unitarias-con-phpunit/
 +
 
 +
===Cambiar en diferentes versiones===
 +
https://diarioprogramador.com/como-instalar-distintas-versiones-de-php-en-ubuntu/
 +
 
 +
*Al instalar una versión de php se crea un directorio
 +
<source lang=bash>
 +
big-pitufin% pwd
 +
/etc/php
 +
big-pitufin% ls
 +
5.6  7.0  7.1  7.2  7.3  7.4  8.0  8.1
 +
big-pitufin%
 +
</source>
 +
*Para cambiar de una versión a otra puedo ejecutar el comando
 +
<source lang=bash>
 +
sudo update-alternatives --set php /usr/bin/php5.6
 +
</source>
 +
O bien en su configuración
 +
<source lang=bash>
 +
sudo update-alternatives --set php /usr/bin/php5.6
 +
</source>
 +
 
 +
===Ejecutar un comando de sudo con php===
 +
*Creo que la primera opción es la más interesante y segura, '''''permitir la ejecución con sudo sin pass para un comando concreto''''':
 +
https://localcoder.org/php-sudo-in-shell-exec
 +
===Grárficos con php===
 +
*Miro esta librería
 +
https://github.com/vivesweb/php-libplot
 +
*Para Înstalarlo voy siguiendo  los paquetes que me pide:
 +
*Me redirige a esta página
 +
https://github.com/vivesweb/graph-php
 +
*Requerimientos para instalar graph-php
 +
img2img (https://github.com/vivesweb/img2img)
 +
ext-op-ml-php (https://github.com/vivesweb/ext_op_ml)
 +
Requires DeJaVu Fonts: (https://travis-ci.org/dejavu-fonts/dejavu-fonts)
 +
 
 +
*He tenido un problema la instalar php-gd y he tenido que instalar previamente '''''libgd3'''''
 +
<source lang=bash>
 +
sudo apt install libgd3
 +
sudo apt-get install php-gd
 +
</source>
 +
*No suele ser necesario, pero recomiendas
 +
<source lang=bash>
 +
sudo apt install php-imagick
 +
</source>
 +
 
 +
===Usar linter en php===
 +
*Usar  un ''''linter de código PHP''''
 +
*Es una herramienta que ayuda a los desarrolladores a identificar posibles errores, problemas de estilo y prácticas no recomendadas en su código fuente PHP. El término "linter" proviene de la combinación de las palabras "lint" y "er" (un programador humorístico).
 +
 
 +
* '''PHP CodeSnifer''' es una herramienta que nos va a permitir detectar posibles o potenciales  errores o malas prácticas en nuestro programa
 +
https://github.com/squizlabs/PHP_CodeSniffer/wiki
 +
https://github.com/squizlabs/PHP_CodeSniffer?tab=readme-ov-file
 +
* '''PHP Stan'''  es otro linter de php
 +
https://phpstan.org/user-guide/getting-started

Última revisión de 21:03 17 dic 2023




Controlando la salida que genera php

ob_start
https://www.php.net/manual/es/ref.outcontrol.php
https://desarrolloweb.com/articulos/control-de-salida-php.html

Seguridad en la web

https://owasp.org/
Web donde se recoge, entre otras cosas un documento internacionalmente reconocido con

los 10 riesgos de seguridad más importantes en la actualidad en aplicaciones web.

API

https://medium.com/the-era-of-apis/how-to-use-an-api-with-php-complete-beginners-guide-4283f9f8d9b3 https://docs.rapidapi.com/docs/api-pricing

Para bind_param

 $con = new mysqli(...);
 $stmt = $con->stmt_init ();
 $sentencia = "Select * from tabla where c1=?, and c2=?";
 $stmt->prepare($sentencia);
 $tipos ="ss";
 $parametros  =[$tipos, $v1, $v2];
 if ( call_user_func_array( [$stmt, 'bind_param'], ( $parametros ) ) === false ) 
    echo "OK";
 else
    echo "No ok!!";

Usar el operador de desempaquetado o splat operator ...

https://www.php.net/manual/en/migration56.new-features.php#migration56.new-features.splat
 $con = new mysqli(...);
 $stmt = $con->stmt_init ();
 $sentencia = "Select * from tabla where c1=?, and c2=?";
 $stmt->prepare($sentencia);
 $tipos ="ss";
 $parametros  =[$v1, $v2];
 $stmt->bind_param($tipos, ...&$parametros)

Lo que realiza este operador especificado con los tres puntos ..., es extraer cada uno de los elementos del array y ponerlos como una lista de valores

 $stmt->bind_param($tipos, ...&$parametros)

Tras desempaquetar $parametros, obtendríamos

 $stmt->bind_param($tipos, &$v1, &$v2)

Realizar solicitud curl

https://superuser.com/questions/149329/what-is-the-curl-command-line-syntax-to-do-a-post-request
  • Muy interesante de de lazy (copiar del inspect element que ofrece el navegador)

Jupyter para php

  • Investigar cómo usando conda puedo crear un entorno de php y crear con jupyter un curso/documentación con su nootebook
Icon present.gif
Tip: Es una pasada


https://github.com/Litipk/Jupyter-PHP
https://anaconda.org/auto/php
https://litipk.github.io/Jupyter-PHP-Installer/

Xdebug

  • Habilitar deshabilitar el módulo de xdebug en php (Par instalar conda de php necesito que esté deshabilitado)
sudo phpenmod -s cli xdebug //habilita
sudo phpdismod -s cli xdebug //Deshabilita
  • Rebotar luego el servicio

Vld: ver el código compilado por php

https://gist.github.com/nikic/6699370
http://blog.golemon.com/2008/01/understanding-opcodes.html
paquete vld http://pecl.php.net/package/vld
https://www.programmersought.com/article/1405109883/

Vesta

Scricpt para crear usuarios en vesta

Crear un fichero de texto con los datos de usuario mail y dominio llamado por ejemplo usuairos.txt

#! /bin/bash
 
while read user mail web
do
./v-add-user $user $user $mail
./v-add-web-domain $user $web
done < /home/manuel/usuarios.txt
Bug con phpmyadmin en vesta

https://forum.vestacp.com/viewtopic.php?f=14&t=10307

  • Instalar laravel en vesta
https://paraisolinux.com/instalar-laravel-vesta-panel/

Gestionar QR desde php

https://sourceforge.net/projects/phpqrcode/files/latest/download

heroku: App para apicaciones de php en la nube

https://dashboard.heroku.com/apps/mrmprobando/deploy/heroku-git

Crear un test

  • Creo una carpeta llamada test
  • Agrego en el composer.json del proyecto
  • Escribo un directorio llamado test
  • Creo una clase con el nombre de la clase que quiero testear terminada en test, extiende de
https://ricardogeek.com/como-realizar-pruebas-unitarias-con-phpunit/

Cambiar en diferentes versiones

https://diarioprogramador.com/como-instalar-distintas-versiones-de-php-en-ubuntu/
  • Al instalar una versión de php se crea un directorio
big-pitufin% pwd
/etc/php
big-pitufin% ls
5.6  7.0  7.1  7.2  7.3  7.4  8.0  8.1
big-pitufin%
  • Para cambiar de una versión a otra puedo ejecutar el comando
sudo update-alternatives --set php /usr/bin/php5.6

O bien en su configuración

sudo update-alternatives --set php /usr/bin/php5.6

Ejecutar un comando de sudo con php

  • Creo que la primera opción es la más interesante y segura, permitir la ejecución con sudo sin pass para un comando concreto:
https://localcoder.org/php-sudo-in-shell-exec

Grárficos con php

  • Miro esta librería
https://github.com/vivesweb/php-libplot
  • Para Înstalarlo voy siguiendo los paquetes que me pide:
  • Me redirige a esta página
https://github.com/vivesweb/graph-php
  • Requerimientos para instalar graph-php
img2img (https://github.com/vivesweb/img2img)
ext-op-ml-php (https://github.com/vivesweb/ext_op_ml)
Requires DeJaVu Fonts: (https://travis-ci.org/dejavu-fonts/dejavu-fonts)
  • He tenido un problema la instalar php-gd y he tenido que instalar previamente libgd3
 sudo apt install libgd3
 sudo apt-get install php-gd
  • No suele ser necesario, pero recomiendas
 sudo apt install php-imagick

Usar linter en php

  • Usar un 'linter de código PHP'
  • Es una herramienta que ayuda a los desarrolladores a identificar posibles errores, problemas de estilo y prácticas no recomendadas en su código fuente PHP. El término "linter" proviene de la combinación de las palabras "lint" y "er" (un programador humorístico).
  • PHP CodeSnifer es una herramienta que nos va a permitir detectar posibles o potenciales errores o malas prácticas en nuestro programa
https://github.com/squizlabs/PHP_CodeSniffer/wiki
https://github.com/squizlabs/PHP_CodeSniffer?tab=readme-ov-file
  • PHP Stan es otro linter de php
https://phpstan.org/user-guide/getting-started