una - php variable class
Mayúsculas en nombre de clase PHP (3)
Los nombres de clase en PHP no distinguen entre mayúsculas y minúsculas (eso no depende del sistema operativo)
class myclass {}
$x = new MYclaSS;
var_dump($x);
object(myclass)#1 (0) {
}
así como un consejo general: no debes comenzar y tratar de mezclar algo allí :)
Código como este no debería funcionar:
class ab {}
class AB {}
Fatal error: Cannot redeclare class AB in ... on line x
Tengo dos clases en mi sistema. Uno se llama archivo y el segundo es archivo. En mi localhost, cuando instalo el archivo, obtengo el objeto de archivo, pero mi amigo que ejecuta la misma secuencia de comandos obtiene el objeto del archivo, ya que las mayúsculas no se reconocían y "archivo" era igual a "Archivo". ¿Es eso algo configurable? Los dos estamos ejecutando en Windows. Tengo WampServer, él tiene XAMPP.
Supongo que está utilizando algún tipo de carga diferida para los archivos de clase, puede ser que esté programando en un marco PHP. El secreto estará en su función de __autoload
. Encuéntralo.
Consulte el manual de PHP para la carga automática .
El siguiente código:
<?php
class file {
public $a;
}
class File {
public $a2;
}
$x = new file();
Da un error: Cannot redeclare class File
puede volver a declarar el Cannot redeclare class File
así que, de nuevo, el truco podría ser qué archivo está incluido .
El comportamiento de su código muestra que una de las clases no se está cargando (de lo contrario, verá un error de redeclare de clase ). Probablemente sea el cargador automático el que primero carga la clase de file
y luego, cuando encuentra la definición de File
, simplemente asume que ya ha cargado la clase (debido al comportamiento insensible de PHP).
PHP no distingue entre mayúsculas y minúsculas para la denominación de clases. significa que normalmente puede hacer $file = new file()
incluso si la clase se llama File
y viceversa.
¿De alguna manera confías en la carga automática de archivos de clase? Si este es el caso, es posible que, dependiendo de la computadora, el intérprete no siempre encuentre el mismo archivo primero. Esto explicará el problema.
Le sugiero que cambie el nombre de sus clases. Siempre es una mala idea confiar en el caso para diferenciar dos cosas diferentes y, por convención, los nombres de las clases siempre comienzan con una letra mayúscula.
Si no puedes cambiar los nombres de clase, te sugiero que eches un vistazo a los espacios de nombres de php .