Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

webruno

usar $_SERVER['DOCUMENT_ROOT'] dentro de CLASS

Recommended Posts

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.