Douglas 6 Denunciar post Postado Dezembro 30, 2007 Galera... Estou tentando carregar uma variável pré-definida para trabalhar em uma classe, mas parece que o PHP não permite. (Para ilustrar): class Classe { public $variavel = $_SERVER['QUERY_STRING'] } Isso irá causar um erro: Parse error: syntax error, unexpected T_VARIABLE Estava inicialmente contornando esse problema, setando o valor com a função magica __construct(), mas agora estou trabalhando com funções estáticas (static), e com isso o __contruct(), não é executado. Existe alguma forma de carregar uma variável pré-definida, ao carregar uma classe, sem usar o __construct()? Compartilhar este post Link para o post Compartilhar em outros sites
ze_violeiro 0 Denunciar post Postado Dezembro 31, 2007 no teu exemplo class Classe { //FALTA A VIRGULA NO FINAL DA LINHA E O ERRO PARECE SER ESSE. public $variavel = $_SERVER['QUERY_STRING']; } Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Dezembro 31, 2007 O erro não é porcausa do ponto e virgula no final. Mesmo assim meu exemplo faltava o ponto e virgula :) Mas o problema persiste. Compartilhar este post Link para o post Compartilhar em outros sites
Sryche 0 Denunciar post Postado Dezembro 31, 2007 Defina como Static. class Lol { public static $xd = $_SERVER['QUERY_STRING']; } $lol = new Lol; echo $lol->xd;:] Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Dezembro 31, 2007 Defina como Static. class Lol { public static $xd = $_SERVER['QUERY_STRING']; } $lol = new Lol; echo $lol->xd;:] Você executou esse código? (Aqui ocorre o mesmo erro). Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Dezembro 31, 2007 Você não pode declarar uma propriedade de uma classe tendo como valor o conteúdo de uma variável externa. Uma alternativa seria criar um método construtor para valorizar a propriedade, ou então um metodo que faça isso. Sempre que fizer isso vai obter erro. Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Dezembro 31, 2007 Você não pode declarar uma propriedade de uma classe tendo como valor o conteúdo de uma variável externa. Uma alternativa seria criar um método construtor para valorizar a propriedade, ou então um metodo que faça isso. Sempre que fizer isso vai obter erro. Valeu Marcio. :) Compartilhar este post Link para o post Compartilhar em outros sites
Sryche 0 Denunciar post Postado Dezembro 31, 2007 A única maneira que eu consegui, foi essa(agora executando o código :P): <?php class Teste { public static $teste; public function __construct(){ $this->teste = "lol"; } } $teste = new Teste(); echo $teste->teste; ?>Mas, creio eu, que você necessitará carregar a função, considerando que você pega a variável da Instância da classe, não da classe em si. Pensei que poderia ser feito na declaração, porque assim o é permitido em ruby, desde que seja atribuído à variável o attr certo(attr_reader,attr_writer ou attr_accessor). Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 31, 2007 Você pode chamar, dentro do método estático, o que define o valor da variável. Por exemplo: class Classe { private static $var; private static function Definir() { self::$var = $_SERVER['VARIAVEL_PRE_DEFINIDA']; } public static function Teste() { self::Definir(); echo self::$var; } } Chamando Teste(), a variável também é definida. É outra solução. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Dezembro 31, 2007 Eu gostaria de setar diretamente, sem a necessidade de criar outros metódos. (Apenas por comodidade). Infelizmente não posso usar o método __construct(), pois estou trabalhando com metodos estáticos, como eu acesso diretamente o metódo o __construct() não é executado. --- A solução foi criar um metódo novo mesmo. :) -- Alguém saberia me responder o porque o não deixa setar uma propriedade com um valor de variável externa? (existe alguma explicação?) Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 31, 2007 Eu já tinha percebido isso, mas nunca tentei descobrir por que isso ocorria. Veja o que encontrei no Manual: No PHP 4, somente inicializações com constantes são permitidas para variáveis com var. Para inicializar variáveis com valores não constantes, você precisará de uma função de inicialização chamada automaticamente quando o objeto for construído a partir da classe. Por isso, essa função é conhecida como construtor (veja baixo). <?php class CarrinhoDeCompras { /* Nenhuma delas funcionarão com o PHP 4 */ var $data_de_hoje = date("Y-m-d"); var $nome = $primeiro_nome; var $proprietario = 'Fred ' . 'Jones'; /* Mas array contendo valores constantes irao */ var $items = array("VCR", "TV"); } /* Esta é a forma como deve ser feito */ class CarrinhoDeCompras { var $data_de_hoje; var $nome; var $proprietario; var $items = array("VCR", "TV"); function CarrinhoDeCompras() { $this->data_de_hoje = date("Y-m-d"); $this->nome = $GLOBALS['primeiro_nome']; /* etc. . . */ } } ?> Fomte: http://www.php.net/manual/pt_BR/language.oop.php Apesar de estar escrito PHP 4 ali, acho que é apenas falta de atualizaçào, pois isso ocorre no 5 também. Inclusive, este código funciona perfeitamente: define("CONSTANTE", "Valor constante"); class Classe { public $var1 = CONSTANTE; } $C = new Classe(); echo $C->var1; Isso apenas reforça nossa constatação. Mas não esclarece o motivo. Vou continuar pesquisando. Se eu encontrar resposta, posto aqui. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Janeiro 1, 2008 Interessante Beraldo.. :) Compartilhar este post Link para o post Compartilhar em outros sites