Na minha opinião essa é uma grande falha do PHP. Além do CF, ASP e JSP também tem esse escopo. Parece (parece...) que a versão 6 do PHP vai incorporar esse recurso. Enquanto isso, encontrei a página do Leo Singleton. Ele desenvolveu uma função que cria o escopo application no PHP. As variáveis ficam acessíveis como outras variáveis de escopo, como $_SESSION[]. Ou seja, basta usar $_APP[]. Simples, não? A página dele tem mais explicações (em inglês), mas basicamente o uso é assim:
Crie o arquivo app.php, com o conteúdo abaixo:
define("APP_DATA_FILE","/tmp/application.data");Nas páginas em que você for usar alguma variável application, coloque as linhas a seguir no início do arquivo:
function application_start () {
global $_APP;
// if data file exists, load application
// variables
if (file_exists(APP_DATA_FILE))
{
// read data file
$file = fopen(APP_DATA_FILE, "r");
if ($file)
{
$data = fread($file,
filesize(APP_DATA_FILE));
fclose($file);
}
// build application variables from
// data file
$_APP = unserialize($data);
}
}
function application_end () {
global $_APP;
// write application data to file
$data = serialize($_APP);
$file = fopen(APP_DATA_FILE, "w");
if ($file)
{
fwrite($file, $data);
fclose($file);
}
}
include("app.php");E no final do arquivo:
application_start();
application_end();Pronto, agora você pode usar o escopo como a seguir:
echo $_APP["contador_visitas"]++;Infelizmente, as variáveis de application criadas com esse recurso não aceitam objetos. Ou seja, não dá pra instanciar um classe em uma variável $_APP[].
_\\//
Nenhum comentário:
Postar um comentário