kingless Posted December 27, 2006 at 07:51 PM Report #72765 Posted December 27, 2006 at 07:51 PM Quando disse que não se pode correr objectos utilizando OO estava a referir-me a isto (PHP 4) class a { var $abc = "teste"; function b () { echo $this->abc; //Mostra um erro se utilizarmos o OO "::" } } a::b(); //Não funciona Experimenta lá esse código para ver se funciona...
jreis Posted December 27, 2006 at 08:03 PM Report #72768 Posted December 27, 2006 at 08:03 PM Pois este codigo aparentemente nao funciona. Não tou muito interessado em descobrir porquê, mas o operador "::" pode ser usado em PHP4. "Pensa positivo: tudo pode piorar"
kingless Posted December 27, 2006 at 08:06 PM Report #72769 Posted December 27, 2006 at 08:06 PM Pois este codigo aparentemente nao funciona. Não tou muito interessado em descobrir porquê, mas o operador "::" pode ser usado em PHP4. Ninguem disse que o operador "::" não pode ser usado em PHP 4 😄 Estou a falar sobre "CORRER OBJECTOS" utilizando "::" 😉
jreis Posted December 27, 2006 at 08:10 PM Report #72770 Posted December 27, 2006 at 08:10 PM Define "correr objectos", sff. Já agora, leste alguma coisa do link que deixei..? "Pensa positivo: tudo pode piorar"
Gurzi Posted December 27, 2006 at 08:11 PM Author Report #72771 Posted December 27, 2006 at 08:11 PM Com o error_reporting em E_ALL nao deu.. pus isto 6181 e agora já dá.. parece que no php 5 é representado assim
kingless Posted December 27, 2006 at 08:16 PM Report #72773 Posted December 27, 2006 at 08:16 PM Define "correr objectos", sff. Já agora, leste alguma coisa do link que deixei..? O Gurzi é que disse correr objectos mas pelo que ele disse eu entendi que correr objectos é tipo chamar um var da classe utilizando $this (ex: $this->var ) e depois chamar a função (ex: Classe::funcao(); a função tem $this->var ) e eu só repeti "correr objectos" 😉😛 Não sei se reparaste mas o link que me deste é sobre classes do PHP 5 e não do PHP 4 (que é o que estamos falar neste caso) 😄
Gurzi Posted December 27, 2006 at 08:20 PM Author Report #72776 Posted December 27, 2006 at 08:20 PM Define "correr objectos", sff. Já agora, leste alguma coisa do link que deixei..? Desculpa, não tinha visto os teus posts!
jreis Posted December 27, 2006 at 08:21 PM Report #72777 Posted December 27, 2006 at 08:21 PM Bem visto (se bem que nesta caso concreto é irrelevante), ta aqui o link para PHP4. ? Mas afinal não tou a perceber qual é a duvida..? o "::" funciona perfeitamente mesmo em PHP4, dentro de classes, fora de classes, etc.... 😕 "Pensa positivo: tudo pode piorar"
kingless Posted December 27, 2006 at 08:28 PM Report #72779 Posted December 27, 2006 at 08:28 PM Bem visto (se bem que nesta caso concreto é irrelevante), ta aqui o link para PHP4. ? Mas afinal não tou a perceber qual é a duvida..? o "::" funciona perfeitamente mesmo em PHP4, dentro de classes, fora de classes, etc.... 😕 Ninguém aqui tem duvidas.. eu só disse que não se pode "correr objectos" ou seja chamar objectos da classe ( $this->var ) se utilizarmos o operador "::" de resto é claro que o operador funciona BEM dentro e fora da classe no PHP 4 e PHP5 😉
jreis Posted December 27, 2006 at 08:40 PM Report #72785 Posted December 27, 2006 at 08:40 PM Sim, com o $this não funciona, logicamente. O teu exemplo: Quando disse que não se pode correr objectos utilizando OO estava a referir-me a isto (PHP 4) class a { var $abc = "teste"; function b () { echo $this->abc; //Mostra um erro se utilizarmos o OO "::" } } a::b(); //Não funciona Experimenta lá esse código para ver se funciona... o "a::b();" realmente não parece funcionar, mas o problema não parece ser do uso do "::". Usando outro exemplo já fornecido, <?php error_reporting(E_ALL); class Homem { var $nome; function teste() { return "homem"; } } $obj = new Homem(); echo $obj->teste(); echo '<br />'; echo Homem::teste(); ?> funciona. "Pensa positivo: tudo pode piorar"
kingless Posted December 27, 2006 at 08:47 PM Report #72786 Posted December 27, 2006 at 08:47 PM Claro que assim funciona meu caro porque não esta a ser chamado nenhum objecto ... (é assim tão dificil de entender ) Tenta la colocar dentro da função teste "return $this->nome"; para ver se Homem::teste(); funciona 😉 Nós só estamos a falar sobre "CHAMAR OBJECTOS" utilizando :: (quantas vezes tenho que repetir ) por isso escusas de dar esses exemplos que ja foram dados neste tópico umas 3 vezes
djthyrax Posted December 27, 2006 at 10:12 PM Report #72799 Posted December 27, 2006 at 10:12 PM Em 27/12/2006 às 20:26, jreis disse: É possível, sinceramente (ainda) não me tenho preocupado muito com PHP5. Se eu fosse a ti começava-me a preocupar já que o PHP6 vai perder muita coisa que existia no PHP4 😉 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!
Gurzi Posted December 27, 2006 at 10:31 PM Author Report #72805 Posted December 27, 2006 at 10:31 PM Em 27/12/2006 às 21:40, jreis disse: Sim, com o $this não funciona, logicamente. O teu exemplo: o "a::b();" realmente não parece funcionar, mas o problema não parece ser do uso do "::". Usando outro exemplo já fornecido, <?php error_reporting(E_ALL); class Homem { var $nome; function teste() { return "homem"; } } $obj = new Homem(); echo $obj->teste(); echo '<br />'; echo Homem::teste(); ?> funciona. Que versão do php tens ??? Digo isto porque parece-me que a partir da 5 o var não funciona no php e dá erro..
QuickFire Posted December 27, 2006 at 10:46 PM Report #72810 Posted December 27, 2006 at 10:46 PM Eu estou a usar o PHP 5 e uso o var sem problema nenhum...
kingless Posted December 27, 2006 at 10:57 PM Report #72818 Posted December 27, 2006 at 10:57 PM @Gurzi é possivel usar var no PHP5 tens aqui 1 exemplo: <?php class a { var $var = 'teste'; public function b () { echo $this->var; } } $classe = new a(); $classe->b(); ?> Só não podes usar "var" no PHP 5 se usares static ou public etc Exemplo class a { var $abc = 'teste'; //isto esta certo public var $abc = 'teste'; //Isto esta errado public $abc = 'teste'; //Isto esta certo static var $abc = 'teste'; //isto esta errado static $abc = 'teste'; //isto esta certo public static $abc = 'teste'; //isto esta certo public static var $abc = 'teste'; //isto esta errado ...
jreis Posted December 28, 2006 at 10:06 AM Report #72876 Posted December 28, 2006 at 10:06 AM Claro que assim funciona meu caro porque não esta a ser chamado nenhum objecto ... (é assim tão dificil de entender ) Tenta la colocar dentro da função teste "return $this->nome"; para ver se Homem::teste(); funciona 😉 Nós só estamos a falar sobre "CHAMAR OBJECTOS" utilizando :: (quantas vezes tenho que repetir ) por isso escusas de dar esses exemplos que ja foram dados neste tópico umas 3 vezes Ahh..! Tens de explicar melhor o que queres dizer, nomeadamente esta parte a::b(); //Não funciona deu-me a entender que não funcionava por se usar o "::". Quando de facto nao tem nada a ver para o caso. Sendo assim, estamos de acordo. 😄 Quanto a PHP5/6 (que ainda nem saiu), sinceramente não estou assim "tão" preocupado devido ao facto de haver tão poucos hosts com isso, a taxa de adopção parece ser ainda mais lenta do que PHP3>PHP4. "Logo se vê". "Pensa positivo: tudo pode piorar"
kingless Posted December 28, 2006 at 12:08 PM Report #72896 Posted December 28, 2006 at 12:08 PM Das duas uma ou não entendeste mesmo ou só queres ter um pouco de razão o.O Vou tentar explicar pela ultima vez e quando digo ultima vez é mesmo ultima.. nem vou responder mas este tópico se for para falar disso outra vez. No PHP 4 quando usamos o operador "::" não podemos chamar objectos na classe (ex: $this->var (isto é um objecto)) porque isso gera um erro fatal, se quisermos chamar objectos numa classe (ex: $this->var ) temos que usar o operador "new", vou dar um exemplo para que entendas melhor. <?php error_reporting(E_ALL); class a { var $abc = 'teste'; function b () { echo $this->abc; //isto é um objecto,,, se chamarmos a classe usando o operador "::" isto vai gerar um erro fatal porque nâo podemos chamar objectos quando usamos o operador "::" ..... para evitar esse erro temos que chamar a classe usando o operador "new" } } $classe = new a(); //isto è chamar uma classe usando o operador "new" isto funciona bem $classe->b(); a::b(); //isto è chamar uma classe usando o operador "::" isto gera um erro fatal ou seja isto não funciona .. E se ainda não entendeste porquê vou repetir... PORQUE CHAMAMOS UM OBJECTO NA CLASSE "a" ( $this->abc ); ?> O erro fatal que gera é mais ou menos este PHP Fatal error: Using $this when not in object context in... Agora faz-me um favor... Lê o que escrevi com atenção. Faz 1 teste com esse código e tira as tuas conclusões.
jreis Posted December 28, 2006 at 12:17 PM Report #72898 Posted December 28, 2006 at 12:17 PM Eu já concordei contigo no meu post anterior, o que é que queres mais? Como já disse, foi má interpretação da minha parte. Não preciso de mais explicações, obrigado por me tentares passar um atestado de burrice. "Pensa positivo: tudo pode piorar"
kingless Posted December 28, 2006 at 12:20 PM Report #72899 Posted December 28, 2006 at 12:20 PM Eu não quero que tu concordes comigo, eu só quero que tu entendas. Não consideres isso como passar um atestado de burrice considera isso como uma ajuda.
jreis Posted December 28, 2006 at 12:23 PM Report #72900 Posted December 28, 2006 at 12:23 PM Concordo porque realmente vejo que está certo, esta questão toda surgiu não por falta de conhecimento da minha parte, mas sim por uma interpretação errada de um comentário teu. "Pensa positivo: tudo pode piorar"
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now