PHP 5.5: la constante CLASS

Posted by victor on June 30th, 2013
php-logoCLASS es una nueva constante disponible a nivel de clase en PHP >= 5.5.0. Se trata de una constante que posee el nombre cualificado (namespace+nombre de clase) de ella y que, a priori, representa una mejora en los test doubles -aquellos en los que usamos mocking y stub para simular el comportamiento de una clase en los unit tests-.
namespace Yosymfony;

class Clase1 {
}

echo Clase1::class;  //resultado: Yosymfony\Clase1
El resultado anterior podríamos haberlo obtenido mediante __NAMESPACE__ . '/ClassName', pero tiene el inconveniente de que __NAMESPACE__ contiene el espacio de nombre actual. Uno de los principales usos vendrá cuando necesitemos crear mocks en los test unitarios:
//Sin CLASS:
use Yosymfony\Clase1;

class Clase1Test extends PHPUnit_Framework_TestCase
{
    public function testClase1ConClase2()
    {
        $c2 = $this->getMock('Yosymfony\Clase2'); // nombre cualificado

        $c1 = new Clase1;
        $c1->setClase2($c2);

        // ...
    }
}
Con la nueva constante es mucho más cómodo:
//Con CLASS:
use Yosymfony\Clase1;
use Yosymfony\Clase2;

class Clase1Test extends PHPUnit_Framework_TestCase
{
    public function testClase1ConClase2()
    {
        $c2 = $this->getMock(Clase2::ClASS);

        $c1 = new Clase1;
        $c1->setClase2($c2);

        // ...
    }
}
  PHP: La constante __NAMESPACE__. PHP: 5.5.0 changelog. PHP: Constantes predefinidas del lenguaje.

Comments

comments powered by Disqus