Eu tenho código algo como isto:
<?
$a="localhost";
function body(){
global $a;
echo $a;
}
function head(){
global $a;
echo $a;
}
function footer(){
global $a;
echo $a;
}
?>
existe alguma maneira de definir a variável global em um único local e tornar a variável $a
acessível em todas as funções de uma só vez? sem fazer uso de global $a;
mais?
global
palavra - chave, considere usar a$GLOBALS['a']
superglobal em todos os escopos ou passe o parâmetro para suas funções.Respostas:
A
$GLOBALS
matriz pode ser usada:Do manual :
Se você possui um conjunto de funções que precisam de algumas variáveis comuns, uma classe com propriedades pode ser uma boa opção em vez de uma global:
fonte
Se a variável não mudar, você pode usar
define
Exemplo:
fonte
FOOTER_CONTENT
se tenta modificar? É comofinal
em Java ouconst
em C, C ++ e C #?Adicione suas variáveis no array super global $ GLOBALS como
e usá-lo globalmente
ou você pode usar constantes acessíveis em todo o script
fonte
Se uma variável é declarada fora de uma função, ela já está no escopo global. Portanto, não há necessidade de declarar. Mas de onde você está chamando essa variável deve ter acesso a essa variável. Se você estiver chamando de dentro de uma função, precisará usar a
global
palavra-chave:Usar palavra-chave global fora de uma função não é um erro. Se você deseja incluir esse arquivo dentro de uma função, pode declarar a variável como
global
.Você pode usar
$GLOBALS
também. É uma superglobal, por isso tem acesso a todos os lugares.Dependendo da sua escolha, você também pode escolher.
fonte
Essa resposta é muito tardia, mas o que faço é definir uma classe que contenha valores booleanos, matrizes e valores iniciais inteiros como variáveis estáticas do escopo global. Quaisquer cadeias constantes são definidas como tal.
As
static
palavras-chave devem estar presentes na classe, caso contrário, os vars $ a, $ be $ c não terão escopo global.fonte
Você respondeu isso da maneira que escreveu a pergunta - use 'define'. mas uma vez definido, você não pode alterar uma definição.
Como alternativa, existem truques com uma constante em uma classe, como class :: constant que você pode usar. Você também pode torná-los variáveis declarando propriedades estáticas para a classe, com funções para definir a propriedade estática, se desejar alterá-la.
fonte
Você pode tentar a palavra-chave
use
nas funções Closure ou Lambdas, se isso se adequar à sua intenção ... Porém, o PHP 7.0. Não é melhor, mas apenas uma alternativa.demonstração | informação
fonte
Vamos pensar um pouco diferente:
E você pode usá-lo e modificá-lo da maneira que quiser, como:
fonte
E se você usar a função processual em vez da variável e chamá-la para qualquer lugar que desejar.
Eu costumo fazer uma coleção de valores de configuração e colocá-los dentro de uma função com declaração de retorno. Apenas incluo o local em que preciso fazer uso do valor global e chamar uma função específica.
fonte
$GLOBALS[]
é a solução certa, mas como estamos falando de alternativas, uma função também pode fazer esse trabalho facilmente:fonte
Você não deveria mais usar globals, eles não estão disponíveis no PHP 5.4.
fonte