• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Zeux

PHP5 -> PHP4

11 mensagens neste tópico

Boas Pessoal

Ando a desenvolver um website e pela primeira vez introduzime a usar POO em php, logo fiz quase tudo segundo as normas PHP5. Estou tambem a usar uma framework desenvolvida por um colega meu que está a funcionar a 100% localmente (PHP5)

Agora tinha chegado a altura de testar as coisas online, só que quando vou a ver o servidor tem php4  :wallbash:

Tenho estado a tentar converter tudo para php4 mas dáme sempre alguns erros, agora está a dar este:

Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /home/hspecas/public_html/teste1/framework/SQL/Table.class.php on line 90

A linha 90 tem o seguinte código:

StringType::getInstance()->validateType("tableName",$tableName);

Alguem me consegue dar uma ajudita ?

(Tenho de ver se pressiono os gajos do webhosting a porem php5, é que programar em php4 é muito mau  :mad:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epa... assim olhando para o nome das tuas funções isso parece-me um contrasenso.

O operador :: serve para acederes a métodos de classes que ainda não têm um objecto, mas acabas por chamar uma função getinstance()

Mas mas isso tema ver com o teu código e não é muito o que esa aqui em causa.

Essa mensagem de erro é dada porque StringType::getInstance() não está a devolver um objecto, logo não podes usar a seta ( -> )

Porque é que não está a devolver um objecto, isso já depende do conteudo da função getInstance.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, sei que está para morrer, o problema é o servidor ainda só ter php4  :rant_01:

Quanto ao código ainda não analizei tudo ao pormenor, mas sei que funciona.

Acho que já descobri maneira de dar volta aos erros, o problema é estar a usar muitas ->, pelos vistos no php4 só se pode chamar uma função de um objecto e não chamar a função de um objecto que foi devolvido por outra função

Se meter o seguinte código já não dá erro:

$aux = StringType::getInstance();
$aux->validateType("tableName",$tableName);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então isso quer dizer que o operador seta tem precedencia maior que o ::

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

(StringType::getInstance())->validateType("tableName",$tableName);

Será que trata disso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, porque não pedir à empresa de alojamento para migrar para PHP5?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado pelas vossas respostas

Ontem telefonei para a empresa de alojamento e migraram-me para php5  :biggrin:

djthyrax: neste momento já tou no server php5, mas daqui a bocado se tiver um tempito já vou experimentar noutro server que tenho em php4 para ver se isso resolvia o problema :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Method Chaining e apareceu com o PHP5: http://www.talkphp.com/advanced-php-programming/1163-php5-method-chaining.html

Epa... assim olhando para o nome das tuas funções isso parece-me um contrasenso.

O operador :: serve para acederes a métodos de classes que ainda não têm um objecto, mas acabas por chamar uma função getinstance()

É uma utilização simples do padrão Singleton.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora