+1

O PHP Tem suporte para Orientado a Objeto?

criado por Elton em 12/04/2002 6:48pm
Nenhuma descrição foi enviada.

Lista de Respostas:

0
12/04/2002 6:48pm
(~14 anos atrás)
Elton respondeu:
SIM ;)
Com o PHP vc pode criar classes (class)com funçoes e chamalas, como no Java ou Delphi por ex.

0
12/04/2002 8:04pm
(~14 anos atrás)
Sim!
Usando o parâmetro class
Existe um bom artigo no phpbrasil , explicando como.
T+

0
13/04/2002 10:41am
(~14 anos atrás)
Caro amigo, o php eh uma linguagem q resumidamente falando possue implementação c, java e perl..

Existem alguns scripts q falam sobre isso

0
23/04/2002 5:48pm
(~14 anos atrás)
Eduardo Dias respondeu:
É possível sim a programação OOP (Object Oriented Programming) no PHP, bastando você definir classes com funções que são tratadas como métodos assim como Java. Ex.:

classe.example.php
===================================================================
1: <?
2: class Example{
3:
4: var $Texto = 'Isto é apenas um exemplo';
5:
6: function Example(){
7:
8: echo $this->Texto;
9: }
10: }
11: ?>
===================================================================


Note que para criar uma classe vc não precisa ter (), simplesmente { e }.

Na linha 4 declarei uma variável de escopo local do tipo String ( você pode utilizar a recursividade do PHP de não precisar definir o tipo da variável ), sendo necessario a existência da chave var antes da variável.

Da linha 6 a 9 eu criei um construtor ( não simplesmente um método, pois quando vc instânciar o ojeto Example, automaticamente executará esta funçao. Note que ela tem o mesmo nome da classe ) que imprime o valor da variável $Texto


objeto.php
===================================================================
1: <?
2: require('class.example.php');
3:
4: $Objeto = new Example();
5: ?>
===================================================================


Na linha 2 requirimos o arquivo que contém a classe ( poderia ser o mesmo).

Na linha 4, criei (abri uma nova instância) um objeto do tipo Example que automaticamente ecoará uma saida assim:


Isto é apenas um exemplo



[]'s


Eduardo Dias

0
08/08/2002 11:56am
(~14 anos atrás)
Ricardo Landim respondeu:
Sim, em PHP vc "declara" objetos criando classes e dentro desta vc coloca funções... vc pode chamar objetos de duas maneiras, a primeira vc deve colocar um marcador para ele e pelo outro chamam-se as funções diretamente pelo caminho no objeto

EX:
<?
class teste{

function teste1(){
return true;
}

}

/* pode ser chamada com */

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

/* ou */

echo teste::teste1();

?>

falows

Ricardo Landim
ricardo@paracatu.com

0
18/09/2002 10:48pm
(~14 anos atrás)
Caio Filipini respondeu:
É possível implementar objetos em PHP, mas a linguagem suporta POO com algumas limitações. Se vc já conhece os conceitos da POO, sugiro que dê uma olhada no artigo "Falhas no suporte OOP do PHP", de Daniel Melo:

http://phpbrasil.com/articles/article.php/id/262

0
03/01/2003 6:33pm
(~14 anos atrás)
SIM, é muito útil pois você pode reutilizar e aproveitar melhor o seu código.

0
04/02/2003 7:27pm
(~14 anos atrás)
jefferson otoni respondeu:
Sim...
O suporte a orientação a objeto em php, é melhorado de acordo com a necessidade.
Mais mesmo assim, tem recursos fantásticos..
O que ele pode fazer!
class
extends //herança
Construtores //contrutores
:: //escopo
parent //uma forma especial de chamar um método da classe extends
Serializando objetos - objetos em sessões //guardando um objeto em um arquivo
As funções mágicas __sleep //isto é do caralho...é planejado para fechar quaisquer conexões com bancos de dados que o objeto tenha, realizar commits pendentes ou realizar tarefas de limpeza semelhantes.

e __wakeup // é planejado para restabelecer conexões com bancos de dados perdidas durante a serialização e para realizar outras tarefas de reinicialização
Referências dentro do construtor
//bem!!! as referencias são um pouco confusas de início mais depois de entende-las fica fácio..
ex:
<?
class PHPbr{
function PHPbr($name)
{
// cria uma referencia dentro do array global $globalref
global $globalref;
$globalref[] = &$this;
// configura o nome conforme o parametro
$this->setName($name);
// e o mostra
$this->echoName();
}

function echoName()
{
echo "<br>",$this->name;
}

function setName($name)
{
$this->name = $name;
}
}

?>
$bar1 = new PHPbr('PHP brasil configura contrutores');
$bar1->echoName();
$globalref[0]->echoName();

/* saida:
PHP brasil configura contrutores
PHP brasil configura contrutores
PHP brasil configura contrutores
*/

0
06/02/2003 1:36pm
(~14 anos atrás)
Leonardo Saraiva respondeu:
Na página do PHP tem uma boa explicação sobre o assunto.

http://www.php.net/manual/pt_BR/language.oop.php

0
10/02/2003 4:58am
(~14 anos atrás)
Lyma respondeu:
Transcrevendo o manual do PHP:

Capítulo 14. Classes e Objetos


class
Uma classe é uma coleção de variáveis e funções trabalhando com essas variáveis. Uma classe é definida usando-se a seguinte sintaxe:


<?php
class CarrinhoDeCompras
{
var $items; // Itens do carrinho de compras

// Acrescenta a quantidade $num do artigo $artnr no carrinho

function add_item ($artnr, $num)
{
$this->items[$artnr] += $num;
}

// Retira a quantidade $num de artigos $artnr do carrinho

function remove_item ($artnr, $num)
{
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>




Isto define uma classe chamada CarrinhoDeCompras que consiste de uma matriz associativa de artigos no carrinho e duas funções para acrescentar e remover itens deste carrinho.


Cuidado
Os cuidados a seguir devem ser tomados a partir do PHP 4:

O nome stdClass é utilizado internamente pela Zend e é uma palavra reservada. Você não pode ter uma classe chamada stdClass no PHP.

O nome de função __sleep e __wakeup são especialmente mágicos para as classes PHP. Você não pode ter esses nomes em nenhuma de suas classes a não ser que você deseje aplicar essa funcionalidade mágica com elas. Veja abaixo para mais detalhes.

O PHP reserva todos os nomes de funções começando com __ como mágicas. É recomendável que você não utilize nome de funções começando com __ no PHP a não ser que você precise dessas funcionalidades mágicas.


Nota: No PHP 4, somente inicializações com constantes são permitidas para variáveis com var. Para inicializar variáveis com valores não constantes, você precisará de uma função de inicialização chamada automaticamente quando o objeto for construído a partir da classe. Por isso, essa função é conhecida como construtor (veja baixo).


<?php
/* Nenhuma delas funcionarão com o PHP 4 */
class CarrinhoDeCompras
{
var $data_de_hoje = date("Y-m-d");
var $nome = $primeiro_nome;
var $proprietario = 'Fred ' . 'Jones';
var $items = array("VCR", "TV");
}

/* Esta é a forma como deve ser feito */
class CarrinhoDeCompras
{
var $data_de_hoje;
var $nome;
var $proprietario;
var $items;

function CarrinhoDeCompras()
{
$this->data_de_hoje = date("Y-m-d");
$this->nome = $GLOBALS['primeiro_nome'];
/* etc. . . */
}
}
?>



Classes são tipos, ou seja, são apenas um modelo das variáveis normais. Você pode criar uma variável (ou instância) do tipo desejado com o operador new.


<?php
$carrinho = new CarrinhoDeCompras;
$carrinho->add_item("10", 1);

$outro_carrinho = new CarrinhoDeCompras;
$outro_carrinho->add_item("0815", 3);



Isto cria os objetos $carrinho e $outro_carrinho, ambos a partir da classe CarrinhoDeCompras. A função add_item() do objeto $carrinho foi chamada e acrescentou 1 item do artigo número 10 a ele. 3 itens do artigo número 0815 foi acrescentado no $outro_carrinho.

Ambos, $carrinho e $outro_carrinho, tem as funções add_item(), remove_item() e a variável itens. Elas são funções e variáveis distintas entre si. Você pode pensar no objetos como os diretórios de um sistema de arquivos. Num disco você pode ter dois arquivos diferentes README.TXT, partindo de que eles estão em diretórios diferentes. Da mesma forma que você teria de especificar o caminho completo para acessar cada arquivo a partir do diretório principal, você também tem de especificar o nome completo do objeto e função que você quer chamar. Em termos do PHP, o diretório principal pode ser o escopo global de nomes, e o separador de diretórios ->. Portanto, os nomes $carrinho->items e $outro_carrinho->items são duas variáveis diferentes. Note que a variável é chamada $carrinho->items e não $carrinho->$items, mesmo porque, um nome de variável em PHP tem apenas um único sinal de cifrão.


// correcto, apenas um $
$carrinho->items = array("10" => 1);

// inválido, porque $carrinho->$items se transforma em $carrinho->""
$carrinho->$items = array("10" => 1);

// correto, mas pode ou não ser o que você quer:
// $carrinho->$myvar se torna $carrinho->items
$myvar = 'items';
$carrinho->$myvar = array("10" => 1);



Quando definindo uma classe, você não pode saber com que nome os objetos serão acessados em seus programas: enquanto escrevia a classe CarrinhoDeCompras, é impossível saber se o objeto criado a partir dela será chamado $carrinho ou $outro_carrinho (ou ainda ambos). Assim, você não pode escrever $carrinho>items dentro da própria classe CarrinhoDeCompras. Entretanto, para poder acessar suas próprias funções e variáveis de dentro da classe, pode-se utilizar a pseudo-variável $this, que pode ser lida como 'eu mesmo' ou 'objeto atual'. Dessa forma, '$this->items[$artnr] += $num' pode ser lido como 'acrescente $num para o contador $artnr do meu array items' ou 'acrescente $num para o contador $artnr do array do objeto atual'.

Nota: Há funções muito boas para manipulação de classes e objetos. Dê uma olhada em Funções de Classes e Objetos

0
13/02/2003 11:07am
(~14 anos atrás)
Cléver Anjos respondeu:
Apesar de PHP "suportar" OO ela não "é" OO.
Falta muita coisa, mas ele ainda chega lá.

0
10/03/2003 8:09am
(~13 anos atrás)
Teóricamente não, mas com um poucon de criativade, você consegue na prática aplicar os conceitos de orientação a objetos.

0
19/09/2003 11:08am
(~13 anos atrás)
Wonder Alexandre respondeu:
PHP e uma liguagem ibrida, da para programar em O.O. como estruturado

0
03/11/2003 3:50pm
(~13 anos atrás)
Victor Henrique respondeu:
Vi algumas pessoas dizendo que o PHP não tem suporte a OOP e temos que "simular" ou algo do gênero.
O PHP, além de não ser uma linguagem totalmente orientada a objetos(como Delphi por exemplo) ele tem um suporte a OOP relativamente bom.
Atualmente, na versão 4.x, temos muitas limitações mas o suporte vai se abranger muito com o PHP 5.
Como li numa das respostas: O PHP tem suporte a OOP, mas ele não é orientado a objetos.

0
19/05/2004 7:28am
(~12 anos atrás)
Marcos Echevarria respondeu:
Claro, tu pode achar uma boa referência no livro PHP a bíblia!

0
07/06/2004 12:18pm
(~12 anos atrás)
Alessander Thomaz respondeu:
PHP não é uma linguagem inteiramente orientada a objetos, mas tem suporte e na versão 5.0 que é bem diferente da 4.0 terá um suporte muito melhor a objetos.

0
11/07/2004 12:43am
(~12 anos atrás)
ae, tp, eh soh usa o class, aqui no site tem um artigo sobre isso

0
07/08/2004 6:01am
(~12 anos atrás)
Tulio respondeu:
Gostei desse FAQ.

0
13/08/2005 9:32pm
(~11 anos atrás)
ai de boa OO porgrame em java :/ o OO do php e primitivo e sou contra ainda de usar ele prefiro programar no modo antigo sem OO , OO deixa o codigo lento :/ eu acho mas se vc querer muintos exemplos de OO veja em http://phpclasses.org la vc acharar rios de exemplos protos baum facilidade = a dificudade de aprendizado :/ esta e minha opnião eu amo php mas odeio OO

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)