De acuerdo con el manual, la función trait_exists()
toma un valor booleano como segundo parámetro, que se relaciona con la carga automática; lo que parece indicar que los rasgos y la autocarga no son dos ideas incompatibles.
Además, si echa un vistazo al código fuente de esa función trait_exists()
, verá una sección de código, condicionada por ese segundo parámetro, que se parece bastante a lo que puede ver en la fuente- código de class_exists()
.
Por lo tanto, yo diría que por segunda vez que los rasgos y carga automática no son ideas incompatibles ;-)
(no me he PHP 5.4 instalado en mi equipo actual, por lo que no puedo comprobar por mí mismo - pero , mirando el código ...)
[editar] OK, he acaba de compilar PHP 5.4.3 , la versión estable actual:
$ /usr/local/bin/php --version
PHP 5.4.3 (cli) (built: May 17 2012 21:11:42)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
Probemos el siguiente porción corta del código, que se guarda como temp-2.php
, y trata de usar un rasgo que no se declara en este archivo:
spl_autoload_register(function ($name) {
echo "AUTOLOAD :: ";
var_dump($name);
});
class MyClass {
use MyTrait; // Let's try to use a trait that is not declared in this file
}
$obj = new MyClass();
$obj->plop();
Básicamente, si la carga automática funciona para los rasgos , "AUTOLOAD"
y se debe mostrar el nombre de mi rasgo.
Por lo tanto, vamos a tratar de ejecutar esa porción de código - y aquí está el resultado me sale:
$ /usr/local/bin/php ./temp-2.php
AUTOLOAD :: string(7) "MyTrait"
Fatal error: Trait 'MyTrait' not found in /.../temp-2.php on line 13
Por lo tanto, la función de carga automática (en este caso, un anónimo uno - no, pero eso cambio una cosa) se llama ...
... lo que significa que rasgos están, con PHP 5.4.3, sujetos a la carga automática.
No solo lo instaló, sino que también probó y brindó una muy buena respuesta. +1 excelente respuesta. ¡Gracias! – MyStream
De nada :-) * (Yo quería instalar 5.4 desde hace mucho tiempo - finalmente lo he hecho ^^) * –