php - para - cuales son los niveles de concentracion
Clase-declaraciĆ³n variable (5)
No puede usar declaración o función, solo un valor escalar. Esto se debe a que las variables de clase se inician en tiempo de compilación (antes del tiempo de ejecución). El constructor de clase debe usarse para iniciar una propiedad con declaración / función.
Cuando la declaración de una variable de clase PHP no podemos realizar ninguna expresión, por ejemplo:
class A
{
$a = 10 + 5;
}
solo podemos proporcionar constantes, por ejemplo:
class A
{
$a = 100;
}
¿Alguien sabe por qué es así?
Solo puede realizar expresiones en Propiedades en el constructor
u other member functions
de la clase.
Tenga en cuenta que también puede inicializar el valor de la propiedad fuera de las funciones de constructor y miembro. Pero es imposible hacer la expresión. La mejor práctica es inicializar y ejecutar expresiones en las funciones de Constructor y miembro de la clase.
Al declarar una variable de clase en PHP OOP, se les llama variables de clase o propiedades de clase. La razón por la que no podemos asignar valores o realizar ninguna expresión o cálculo es que está declarando la estructura de la clase aquí, que no es lo mismo que una asignación de variable en el código de procedimiento. La estructura de la clase PHP OOP es analizada por php Parser y Compiled, mientras realiza esta operación el compilador no ejecuta ningún código de procedimiento. Solo puede manejar valores constantes.
Como ya lo hiciste, lo siguiente no funcionará y uno obtiene un error de sintaxis.
class A
{
$a = 100;
}
Pero puedes lograr lo mismo usando constante en clase como esta.
class A
{
const a = 100;
}
echo A::a;
Si necesita hacer operaciones, haga esto usando métodos o incluso constructor de clase si es necesario.
Bueno, si tiene algo que ver con la inicialización de un nuevo nombre de base de datos a través de "archivo.txt" que refieres a través de una ruta determinada, lo que hice para resolver dicho problema es este:
class A
{
private static $a = "";
private function __construct()
{
$a = //Code to get the value and initialize it.
}
}
Eso es porque la expresión no está permitida como valor predeterminado de campo. Utilice constructores para inicializar las variables.
Sugiero que te guste esto ..
class A
{
public $a;
function __construct()
{
return $this->a = 10 + 5;
}
}
$a1 = new A;
echo $a1->a; //"prints" 15