Jump to content

PHP Orientado a Objectos


Recommended Posts

Posted

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

Posted

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();

    
    ?>
Posted

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.

"Pensa positivo: tudo pode piorar"

Posted

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;
?>
Posted

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

Posted

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

"Pensa positivo: tudo pode piorar"

Posted

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
Posted

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.

"Pensa positivo: tudo pode piorar"

Posted

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

Posted

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.

"Pensa positivo: tudo pode piorar"

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.