Ir para conteúdo

POWERED BY:

Arquivado

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

George Miler

Como corrigir unexpected T_VARIABLE, expecting '('

Recommended Posts

Sou iniciante em php meu codigo agora deu pra dar esse erro:

Parse error: syntax error, unexpected T_VARIABLE, expecting '(' in /home/geobr/public_html/tw/a/reply.php on line 23

 

A linha 23 que ta dando erro é essa:

public function __$this-> _oauth = new tmhOAuth(array(

 

Alguem sabe como corrigir?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você estava tentando fazer?

 

você está criando um método mas está atribuindo um valor como se fosse uma propriedade da classe. É claro que o PHP vai reclamar pedindo parênteses :closedeyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você estava tentando fazer?

 

você está criando um método mas está atribuindo um valor como se fosse uma propriedade da classe. É claro que o PHP vai reclamar pedindo parênteses :closedeyes:

 

esse é codigo todo

public function __$this-> _oauth = new tmhOAuth (array (
"CONSUMER_KEY '=>'',
"CONSUMER_SECRET '=>'',
"User_token '=>'',
"User_secret '=>'',
"Curl_ssl_verifypeer '=> false,
)); 

 

e esta ao meu ver, correto, mas infelizmente ta dando aquele erro

 

Parse error: syntax error, unexpected T_VARIABLE, expecting '(' in /home/geobr/public_html/tw/a/reply.php on line 23

Compartilhar este post


Link para o post
Compartilhar em outros sites

E esse __$? Nunca via nada do tipo.

 

Sem contar as aspas bagunçadas e os espaços nos nomes dos índices. Uma versão corrigida seria algo como:

 

public function __construct() {

   $this -> _oauth = new tmhOAuth(

       array(

           'CONSUMER_KEY' => '',
           'CONSUMER_SECRET' => '',
           'User_token' => '',
           'User_secret' => '',
           'Curl_ssl_verifypeer' => false,
       )
   );
}

Sabe o que parece? Que esse código foi copiado pela metade.

 

Do public atés os dois underlines seria o início da declaração do construtor da classe.

 

Daí pra frente, o corpo desse método.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E esse __$? Nunca via nada do tipo.

 

Sem contar as aspas bagunçadas e os espaços nos nomes dos índices. Uma versão corrigida seria algo como:

 

public function __construct() {

   $this -> _oauth = new tmhOAuth(

       array(

           'CONSUMER_KEY' => '',
           'CONSUMER_SECRET' => '',
           'User_token' => '',
           'User_secret' => '',
           'Curl_ssl_verifypeer' => false,
       )
   );
}

Sabe o que parece? Que esse código foi copiado pela metade.

 

Do public atés os dois underlines seria o início da declaração do construtor da classe.

 

Daí pra frente, o corpo desse método.

 

Nao tinha me atentado no __construct() , ^^, mas enfim, estou usando um open source, que precisa de uma extensao pecl pra rodar, mas como meu host nao tem isso e nem como instalar, e eles tao demorando pra resolver tou tentando mudar a conexao.

 

 

public function __construct() {

   $this -> _oauth = new tmhOAuth(

       array(

           'CONSUMER_KEY' => '',
           'CONSUMER_SECRET' => '',
           'User_token' => '',
           'User_secret' => '',
           'Curl_ssl_verifypeer' => false,
       )
   );

}

public function setToken($token, $secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI)
{
	$this->_oauth->setToken($token, $secret);
}

public function addReply($term, $reply)
{
	$this->_replies[$term] = $reply;
}

 

Agora resolver dar esse erro na linha 39

Parse error: syntax error, unexpected ',', expecting '&' or T_VARIABLE in home/geobr/public_html/tw/a/reply.php on line 39

 

o codigo ta ai em cima da função ta bem em cima, mas a linha 39 é essa:

	public function setToken($token, $secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, na boa, procura outro código opensource que faça a mesma coisa porque esse daí, sinceramente.

 

Nesse problema, talvez pelo fato do autor não manter um padrão de codificação, nomeou uma Interface de forma toda capitalizada (normalmente isso se faz com constantes) e tentou fazer o type-hint de dois argumentos na assinatura da função.

 

Ou então, ele simplesmente definiu as constantes e acho que enfiando elas ali o corpo do método assumiria que, na ausência daqueles valores, os das constantes seriam utilizados.

 

Mas esqueceu que antes de haver um type-hint, deve existir uma variável.

 

Sendo assim, o código corrigido, seria:

 

interface OAUTH_SIG_METHOD_HMACSHA1 {}

interface OAUTH_AUTH_TYPE_URI {}

public function setToken($token, $secret, OAUTH_SIG_METHOD_HMACSHA1 $method, OAUTH_AUTH_TYPE_URI $uri) {}

Pouco provável. <_<

 

Ou então...:

 

define( 'OAUTH_SIG_METHOD_HMACSHA1', 'algumvalor' );
define( 'OAUTH_AUTH_TYPE_URI', 'outrovalor' );

public function setToken($token, $secret, $method = OAUTH_SIG_METHOD_HMACSHA1, $uri = OAUTH_AUTH_TYPE_URI) {}

Poderia ser utilizada, porém dada a fluidez léxica da assinatura do método, é improvável, pois define um valor padrão para dois argumentos opcionais sem se ater ao conceito OOP.

 

Pense bem. A exemplo da primeira constante, qual o sentido em definir N constantes, uma para cada possibilidade de método de criptografia?

 

Algo mais genérico onde o valor comandaria seria o mais correto:

 

define( 'OAUTH_SIG_METHOD', 'HMACSHA1' );

E por fim:

 

public function setToken($token, $secret, OAuth::OAUTH_SIG_METHOD_HMACSHA1 $method, OAuth::OAUTH_AUTH_TYPE_URI $uri) {}

Forma aceitável pois utiliza possíveis constantes de classe existentes numa classe ou interface chamada OAuth

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.