Cosas de PHP

Tips de PHP que cada día va más rápido

Expandir variables :: Sintaxis compleja (curva)

Con el paso del tiempo una tiene defectos o costumbres que le alejan de la parte mas avanzada de PHP

Una de ellas es la Sintaxis compleja (curva)

Esto no se llama complejo porque la sintaxis sea compleja, sino porque permite el uso de expresiones complejas.

Cualquier variable escalar, elemento de matriz o propiedad de objeto con una representación de cadena se puede incluir a través de esta sintaxis. La expresión se escribe de la misma manera que aparecería fuera de la cadena y luego se envuelve entre { y }.

// sin Complex (curly) syntax
$word = 'PHP';
$sentence = 'I just love ' . $word . '.';

// con Complex (curly) syntax
$word = 'PHP';
$sentence = "I just love  {$word}.";

Otros usos mas complejos y divertidos.

echo "I just love {$foo['word']}";
echo "I just love {$foo->getWord()}";

Seguridad

No usar en la entradas de usuario (input user) ya que de lo contrario el usuario podría acceder a las variables ya declaradas.

Prueba de concepto

<?php

$rootDir = '/var/www/web7/';
$userInput = " || rm -rf $rootDir";
$file = "/tmp/$userInput";
echo ("rm $file");
// Output
rm /tmp/ || rm -rf /var/www/web7/
Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

Como instalar un fork en un proyecto con composer.

Instalar forks en proyecto

A veces, quieres colaborar con un el desarrollo de un paquete, y para ello realizas un fork, te lo baja a local y realizas los cambios, los tests, y subes una request.

Pero por lo que sea necesitas usar ese fork en tu programa, mientras se acepta el PR o pull request

Solución

composer.json

   "require": {
   ...
       "vendor/paquete": "@dev"
   },
   ...    

   "repositories": [
        {
            "type": "path",
            "url": "/Users/user/Sites/fork-paquete",
            "options": {
                "symlink": true
            }
        }
    ],
    "config": {
   		"preferred-install": "dist",
       "prefer-source": true, 
       ...
    },
    "minimum-stability": "stable",
    "prefer-stable": true   
Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.