Ir para o conteúdo
Gurzi

PHP Orientado a Objectos

Mensagens Recomendadas

Gurzi    2
Gurzi

Bem criei este tópico porque acredito que muita gente vai precisar dele.

Estou a aprender e isto está me dar aqui um erro estúpido

<?php

class Foo
{
public static $eu_static = ‘foo’;

public function valorStatic() {
return self::$eu_static;
}
}

print Foo::$eu_static; // foo

$obj = new Foo();
$obj->valorStatic(); // foo 
    
    ?>

ERRO :

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /Users/tiagopalhota/Sites/teste.php on line 3

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

ERRO :

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /Users/tiagopalhota/Sites/teste.php on line 3

Qual é a versão do teu PHP ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

Não dá para faze echos dentro de uma função ?

<?php
error_reporting(E_ALL);
class Homem {
    
    public var $nome;
    
    public function teste()
    {
        echo "homem";
    }
}


$obj = new Homem();
$obj->teste();

    
    ?>

   

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jreis    0
jreis

Dar dá, mas não é a forma mais apropriada de "escrever" coisas. Digo eu.

Experimenta assim:

<?php
error_reporting(E_ALL);
class Homem {
    
    public var $nome;
    
    public function teste()
    {
        return "homem";
    }
}


$obj = new Homem();
echo $obj->teste();

    
    ?>

Suponho que assim funcione. Obviamente para estruturas de dados mais complexas pode não ser assim tão linear, mas tas a perceber a ideia.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

Não fazia a mínima ideia que php before v5.0 não corria objectos.

Fica a dica;)

Thnks!

Só não podes correr objectos no PHP 4 utilizando o OO mas podes correr de outra forma...

Ex:

<?php
class a {

        var $abc = 'teste';

        function b () {
                echo $this->abc;
                }

}

$class = new a();

$class->b()

echo $class->abc;
?>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

Dar dá, mas não é a forma mais apropriada de "escrever" coisas. Digo eu.

Experimenta assim:

<?php
error_reporting(E_ALL);
class Homem {
    
    public var $nome;
    
    public function teste()
    {
        return "homem";
    }
}


$obj = new Homem();
echo $obj->teste();

    
    ?>

Suponho que assim funcione. Obviamente para estruturas de dados mais complexas pode não ser assim tão linear, mas tas a perceber a ideia.

Acho que esse código esta errado porque no PHP 4 não se pode utilizar public na var nem na função e no PHP 5 não se pode utilizar public seguido de var

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

Abre o php.ini e procura pela linha "error_reporting = ..." e troca para

error_reporting  =  E_ALL

depois procura por "display_errors =" e troca para

display_errors = On

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jreis    0
jreis

Acho que esse código esta errado porque no PHP 4 não se pode utilizar public na var nem na função e no PHP 5 não se pode utilizar public seguido de var

É possível, sinceramente (ainda) não me tenho preocupado muito com PHP5.

Só não podes correr objectos no PHP 4 utilizando o OO mas podes correr de outra forma...(...)

O que é que queres dizer com isso, não poder correr objectos utilizando o OO..?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

O que é que queres dizer com isso, não poder correr objectos utilizando o OO..?

//Não se pode correr objectos assim

echo ClasseN::Objecto;

//só se pode correr objectos assim

$classeN = new classeN();
echo $classN->Objecto;

Melhor dizendo:


class a {

var $abc = "teste";

function b {

echo $this->abc; //Mostra um erro se utilizarmos o OO "::"

}
}

a::b(); //Não funciona

$class = new a();
$class->b(); //funciona

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jreis    0
jreis

Hmm, ja vi que te estavas a referir ao "::" (operador "scope resolution") quando falavas em "OO". Esse operador serve apenas para como o nome indica fazer "scope resolution", não deixa de ser programação OO por não se poder usar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

Ah isso. Por acaso pode-se (desde PHP3, segundo parece), mas mesmo admitindo que não se pudesse, não deixaria de ser "OO". Pormenores.

Mais info.

Experimenta tu o código para ver se funciona ;)

Hmm, ja vi que te estavas a referir ao "::" (operador "scope resolution") quando falavas em "OO". Esse operador serve apenas para como o nome indica fazer "scope resolution", não deixa de ser programação OO por não se poder usar.

Ninguem disse que deixa de ser programação...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jreis    0
jreis

Esse código especificamente não sei se funciona, mas tenho scripts que usam essa funcionalidade.

Bem visto, ninguém disse que deixava de ser programação.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

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 :D Estou a falar sobre "CORRER OBJECTOS" utilizando "::" ;)

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade