Tengo dos clases en mi sistema. Uno se llama archivo y el segundo es Archivo. En mi servidor local cuando instalo un archivo recibo un objeto de archivo, pero mi amigo que ejecuta el mismo script obtiene el objeto de File como si las letras mayúsculas no se reconocieran y "file" fuera igual a "File". ¿Es eso algo configurable? Ambos estamos corriendo en Windows. Tengo WampServer, él tiene XAMPP.Mayúsculas en el nombre de clase PHP
Respuesta
nombres de las clases en PHP no distinguen entre mayúsculas y minúsculas (que no depende del sistema operativo)
class myclass {}
$x = new MYclaSS;
var_dump($x);
object(myclass)#1 (0) {
}
así como consejos generales: No se debe iniciar y tratar de mezclar algo allí :)
Código como este debería no trabajo:
class ab {}
class AB {}
Fatal error: Cannot redeclare class AB in ... on line x
Eso no explica por qué está cargando una clase y su amigo otro con el mismo código. – krtek
Tienes razón. Se amplió la respuesta para mostrar que un código como este no debería funcionar en conjunto si las dos clases ("archivo" y "Archivo") fueran necesarias en un script. Pero con la información provista no puedo adivinar lo que está experimentando, solo demuéstrele que no se supone que funcione en absoluto. – edorian
Es posible si se usa un cargador de clases, puede tener dos archivos con el mismo nombre de clase dentro y dependiendo del cargador de clases, puede funcionar.Pero esto solo puede ocasionar grandes problemas;) – krtek
PHP es sensible a mayúsculas para la denominación de clase. significa que normalmente puede hacer $file = new file()
incluso si la clase se llama File
y viceversa.
¿Está usted por casualidad confiando 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 encarecidamente 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 puede cambiar los nombres de clase, sugiero echar un vistazo a php namespaces.
Pero los cargadores automáticos en sistemas de archivos sensibles a mayúsculas y minúsculas no encontrarán sus clases escritas en casos diferentes. –
mis clases no comienzan con letras mayúsculas ... nunca lo han hecho, nunca lo harán – dsdsdsdsd
@dsdsdsdsd - S, ¿por qué cumplen básicamente todos los estándares? –
Supongo que está utilizando algún tipo de cargando lazy para archivos de clase, puede estar programando en un marco de PHP. El secreto estará en la función __autoload
. Encuéntralo.
Compruebe PHP manual for Autoloading.
El siguiente código:
<?php
class file {
public $a;
}
class File {
public $a2;
}
$x = new file();
da un error: Cannot redeclare class File
así que de nuevo, el truco puede haber en el archivo será incluido .
El comportamiento de su código muestra que una de las clases no se está cargando (de lo contrario, verá error de redeclaración de clase). Probablemente es el cargador automático que primero carga la clase file
y luego, cuando encuentra la definición a File
, simplemente asume que ya ha cargado la clase (debido al comportamiento insensible a las mayúsculas y minúsculas de PHP).
- 1. PHP Clase Nombre de propiedad
- 2. ¿PHP no distingue entre mayúsculas y minúsculas?
- 3. Renombrar Directorio con el mismo nombre en mayúsculas o minúsculas
- 4. minúsculas y mayúsculas nombre de archivo
- 5. Obtener el nombre de clase de la clase extendida
- 6. PHP - añadir subrayado antes mayúsculas
- 7. Espacio de nombres PHP con nombre de clase dinámico
- 8. PHP DOM XPath - búsqueda de nombre de la clase
- 9. interruptor de mayúsculas y minúsculas, php
- 10. obtener la propiedad estática de una clase con nombre de clase dinámica en PHP
- 11. cómo declarar una clase PHP con un nombre de variable
- 12. PHP, nueva clase de variable en el espacio de nombres
- 13. entre mayúsculas y minúsculas en el número de URL en Linux + Nginx + Kohana + php
- 14. ¿Es posible obtener el nombre de la clase actual de un objeto desinstalado en PHP?
- 15. Cómo obtener el nombre de la clase de llamada (en PHP)
- 16. css mayúsculas y minúsculas
- 17. Obtener el nombre de clase de la clase CONSTRUIR
- 18. Obtener el nombre de propiedad de clase
- 19. PHP: parámetros insensibles a las mayúsculas
- 20. PHP entre mayúsculas y minúsculas explotar()
- 21. Nombre de clase y nombre de archivo
- 22. Usando "esto" con el nombre de clase
- 23. ¿Obtener el nombre de la clase actual?
- 24. Grails - grails.converters.JSON - eliminando el nombre de clase
- 25. obtener el ensamblaje por nombre de clase
- 26. ¿Cómo obtener el nombre de clase?
- 27. ¿Cómo obtengo el nombre de clase "valueOf"?
- 28. Complemento de nombre de archivo insensible a mayúsculas y minúsculas
- 29. cambio de nombre de la tabla a mayúsculas
- 30. Obtiene el nombre de clase del objeto Clase
realmente no debería mezclar nombres como ese – JamesHalsall