webruno 0 Denunciar post Postado Novembro 11, 2007 E aí galera... estou colocando a variavel predefinada $_SERVER['DOCUMENT_ROOT'] em uma class, mas ta dando o erro: class Noticias { var $teste = $_SERVER['DOCUMENT_ROOT']; } Parse error: parse error, unexpected T_VARIABLE in F:\...\Noticias.php on line 3 Provavelmente porque é proibido colocar esse tipo de variavel em class. Então como fazer pra usar o DOCUMENT ROOT em classe? Obrigado. Bruno. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 11, 2007 Defina o valor da propriedade do objeto dentro do construtor da classe. Para PHP 4: http://www.php.net/manual/pt_BR/language.oop.constructor.php Para PHP 5: http://www.php.net/manual/pt_BR/language.oop5.decon.php Abraços, Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
webruno 0 Denunciar post Postado Novembro 11, 2007 Legal, dessa forma deu... eu estava usando o construct para para setar as outras variaveis, mas como essa seria uma CONSTANTE eu estava criando e ja setando. Tipo: const DIR_UP = $_SERVER['DOCUMENT_ROOT']; Existe uma forma de criar e já setar uma constante com o DOCUMENT_ROOT? Obrigado pela explicação! Bruno. Compartilhar este post Link para o post Compartilhar em outros sites
diegoholiveira 3 Denunciar post Postado Novembro 11, 2007 define("DOCUMENT_ROOT", $_SERVER['DOCUMENT_ROOT']); agora, qual a necessidade disso? a variavel $_SERVER['DOCUMENT_ROOT'] é super global, esta disponivel em qualquer parte do seu codigo, ate mesmo dentro de classes, funções e etc... Compartilhar este post Link para o post Compartilhar em outros sites
webruno 0 Denunciar post Postado Novembro 12, 2007 Sim diego, ela está disponível dentro de classes, mas a maneira de declarar é só atraves do construct? Não posso colocar no início do meu código e fora do construct: var $teste = $_SERVER['DOCUMENT_ROOT']; porque? Obrigado, Bruno. Compartilhar este post Link para o post Compartilhar em outros sites
diegoholiveira 3 Denunciar post Postado Novembro 12, 2007 me explica a logica em se criar uma variavel que contenha um valor que já esta em uma variavel super global. porque ao inves de você criar uma variavel $teste e ficar chamando ela no seu codigo você não economiza memoria e já chama diretamente no seu codigo a variavel $_SERVER['DOCUMENT_ROOT']? é apenas uma ideia. Agora, em todo caso, se você esta buscando definir um diretorio padrão pra includes é melhor usar isso como constante. Compartilhar este post Link para o post Compartilhar em outros sites
webruno 0 Denunciar post Postado Novembro 12, 2007 E aí Diego... então, essa é a idéia, vou explicar melhor... estou fazendo uma classe pra upload, olha só o início dela: PHP const RAIZ = $_SERVER['DOCUMENT_ROOT']."/";const DIR_UP = RAIZ."uptemp/"; //diretorio para onde vai o upload. const DIR_IMG = RAIZ."imagens/"; //diretorio para onde vai a imagem grande. const DIR_THUMB = RAIZ."imagens/"; //diretorio para onde vai a thumbnail. Esse é o motivo de eu querer declarar desse forma. Só que se eu fasso assim dá erro. A única maneira que não dá erro é colocando no __construct. Como faço pra fazer dessa minha maneira? Valeu, Bruno. Compartilhar este post Link para o post Compartilhar em outros sites
cmelo 0 Denunciar post Postado Fevereiro 1, 2008 Encontrei essa função no manual do PHP e funcionou comigo: Vlw. Since $_SERVER['DOCUMENT_ROOT'] is not always present, the following will provide it where $_SERVER dosen't. <?php function resolveDocumentRoot() { $current_script = dirname($_SERVER['SCRIPT_NAME']); $current_path = dirname($_SERVER['SCRIPT_FILENAME']); /* work out how many folders we are away from document_root by working out how many folders deep we are from the url. this isn't fool proof */ $adjust = explode("/", $current_script); $adjust = count($adjust)-1; /* move up the path with ../ */ $traverse = str_repeat("../", $adjust); $adjusted_path = sprintf("%s/%s", $current_path, $traverse); /* real path expands the ../'s to the correct folder names */ return realpath($adjusted_path); } ?> It counts the number of folders down the path we are in the URL, then moves that number of folders up the current path... end result should be the document root :) It wont work with virtual folders or in any situation where the folder in the URL dosen't map to a real folder on the disk (like when using rewrites). Faça o seguinte: --> inserir a função <-- const RAIZ = resolveDocumentRoot()."/"; const DIR_UP = RAIZ."uptemp/"; //diretorio para onde vai o upload. const DIR_IMG = RAIZ."imagens/"; //diretorio para onde vai a imagem grande. const DIR_THUMB = RAIZ."imagens/"; //diretorio para onde vai a thumbnail. Compartilhar este post Link para o post Compartilhar em outros sites