As funções PHP são sensíveis a maiúsculas

Eu estava cavando algum código, e eu encontrei algumas chamadas para mySQL_fetch_array . O maiúsculas de minúsculas do PHP é sobre nomes de funções? Lembro-me de ler isso em algum lugar, mas não consigo encontrar nenhuma referência a ele.

Estou citando isso :

Nota: Os nomes das funções não são sensíveis às maiúsculas e minúsculas, embora geralmente seja uma boa forma de chamar as funções conforme elas aparecem na declaração.

Portanto, parece que as funções definidas pelo usuário não são sensíveis a maiúsculas e minúsculas, houve uma votação para fazer funções / objects sob o ponto de vista do PHP5.

Não.

As funções PHP não diferenciam maiúsculas de minúsculas

TL; DR: os nomes das classs não são sensíveis às maiúsculas e minúsculas, mas usam sempre o mesmo caso da declaração (o mesmo que com as funções). Além disso, as classs de instancia com diferentes casos conforme foram definidas podem causar problemas com carregadores automáticos.


Além disso, os nomes das classs não são sensíveis a maiúsculas e minúsculas:

 < ?php class SomeThing { public $x = 'foo'; } $a = new SomeThing(); $b = new something(); $c = new sOmEtHING(); var_dump($a, $b, $c); 

Esta saída:

 class SomeThing#1 (1) { public $x => string(3) "foo" } class SomeThing#2 (1) { public $x => string(3) "foo" } class SomeThing#3 (1) { public $x => string(3) "foo" } 

O problema é o uso de carregadores automáticos e filesystems sensíveis a maiúsculas e minúsculas (como ext2 / 3/4), na qual você deve chamar o nome da class com o mesmo caso, o arquivo que contém a class é nomeado (não como o nome da class está realmente encheckboxdo) ou use strtolower :

O arquivo de class:

 < ?php // filename something.php class SomeThing { ... } 

A function de carregador automático ( __autoload ou uma function para registrar com spl_autoload_register )

 function my_autloader($className) { $filename = CLASSES_DIR . DIRECTORY_SEPARATOR . $className . '.php'; if (file_exists($filename)) { require($filename); } } 

Agora, com este código:

 $a = new something(); // works $b = new SomeThing(); // does not work $c = new SOMETHING(); // does not work 

Você pode fazer isso funcionar (ou seja, ter nomes de class efetivamente insensíveis a maiúsculas e minúsculas usando um carregador automático) se você adicionou uma chamada para strtolower() no código do carregador automático, mas, como com as funções, é melhor fazer referência a uma class da mesma maneira que ela é declarado, tem o nome do arquivo com o mesmo caso que o nome da class, usa os carregadores automáticos e esquece o uso de strtolower e os gostos.

Não, eles não são sensíveis a maiúsculas e minúsculas, no entanto, você sempre deve usar o caso que está no manual, para consistência.

No entanto, as variables diferenciam maiúsculas de minúsculas

Nas variables ​​do PHP são sensíveis a maiúsculas e minúsculas, mas as funções não têm problemas como este. Você pode usar as seguintes instruções para exibir a saída, tudo mostrando o mesmo resultado.

 < ?php Echo "This is a test script"; ECHO "This is a test script"; echo "This is a test script"; ?> 

Por outro lado, se você mudar a sensibilidade do caso das variables, ele mostrará o erro.

Exemplo:

 < ?php $a=5; echo $A;// It will show the error. ?> 

Saída:

 Notice: Undefined variable: A in C:\xampp\htdocs\test.php on line 3 

E os nomes dos methods também não são sensíveis às maiúsculas e minúsculas. por exemplo:-

 < ?php class C { public function method() { } public function METHOD() { } } 

saída:

 PHP Fatal error: Cannot redeclare C::METHOD() in ....php on line 6 

Em conclusão da resposta de todos. Embora o PHP não exija a consistência do caso de caracteres em todas as instâncias até agora no PHP5.

A melhor prática será

sempre use os mesmos casos quando a referência retorna a qualquer das variables ​​(é “obrigatório”) ou funções (é opcional, mas recomendado).

Você nunca sabe, talvez um dia, o voto seja concluído e você salvará todo o pesadelo da mudança de casos em suas aplicações há alguns anos atrás que exigem atualização em PHP.

Espero que ajude de qualquer forma.

Pode ser que este seja tarde demais, mas …

Todos já conheciam aqui: o mecanismo PHP não se preocupa com o caso das letras.

E há votação no bugtracker do PHP, onde a maioria diz: “Sim, sou uma sensibilidade de pro caso”.

Mas eu sou contra, porque na minha estrutura MVC, eu chamo a ação do controlador:

  $currentController = new $controller($parameters); $currentAction = $currentController->{$action}(); 

$ controller e $ action são retirados do URL como está.

Pense, se um usuário publicar um link para o meu site: https: // my-site / MyPartnerController / MyPartnerGallery

enquanto a class é chamada myPartnerController …

Isso significa que ninguém ganha essa página se os nomes de classs e funções do PHP diferenciar entre maiúsculas e minúsculas.

Sim, sempre uso todos os nomes no código conforme declarado. Mas eu rezo para que eles nunca criem nomes de funções e classs sensíveis a maiúsculas e minúsculas.

Obrigado!