É a mesma coisa mas não funciona do mesmo jeito
Primeiramente eu fiz essa classe aqui, cujo o objetivo é ela encontrar por sí própria um arquivo e dar include no mesmo.... vejamos:
Spoiler
<?php
class QueryPages {
private static $FileName;
private static $FileExists;
private static $FilePath;
public static function openGet($urlFile) {
self::$FileName = (isset($urlFile) && !empty($urlFile) ? $urlFile : '404' );
self::findFile();
if (self::$FileExists) {
include (self::$FilePath);
} else {
include (self::basePath('test_c') . 'outro.php');
//die("Erro ao encontrar arquivo");
}
}
private static function findFile() {
self::$FileExists = false;
foreach (self::getDir() as $dirPage) {
if (file_exists(self::basePath($dirPage) . self::$FileName . '.php') && !is_dir(self::basePath($dirPage) . self::$FileName)) {
self::$FilePath = self::basePath($dirPage) . self::$FileName . '.php';
self::$FileExists = true;
}
}
}
private static function getDir() {
return (['test_a', 'test_b']);
}
private static function basePath($path) {
return (
__DIR__
. DIRECTORY_SEPARATOR
. '..'
. DIRECTORY_SEPARATOR
. 'modules'
. DIRECTORY_SEPARATOR
. $path
. DIRECTORY_SEPARATOR
);
}
}
Basicamente então tenho dois diretórios (test_a e test_b) digamos então que dentro de test_a eu tenha um arquivo chamado exemplo.php
Então para que o arquivo seja incluído basta eu chamar o método
**QueryPages::openGet('exemplo');**
Certo funciona beleza como era de se esperar.
Aqui então entra o termo que quero chegar...
Se eu criar uma variável qualquer no arquivo que chama o método para incluir, o arquivo incluso não reconhece essa variável.
O interessante que se substituir o include pela classe e retornar o arquivo com seu diretório como string então dar o include chamando o método da classe, o arquivo que será incluído reconhece a variável criada...
// Substiuíndo isso
//include (self::$FilePath);
// Por isso:
return (self::$FilePath); // Ao invés de incluír o arquivo o método retorna o local dele como string
Então a forma de uso passa a ser
**include (QueryPages::openGet('exemplo'));**
Alguém teria conhecimento ou uma teoria sobre o porque da classe incluir o arquivo, esse mesmo arquivo perde toda orientação do documento anterior?
Uma vez que nada se muda em ambos os casos.Discussão (2)
Carregando comentários...