Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Realm

Classes

Recommended Posts

fala povo :lol:

 

como faço pra sobrecarregar um método

dentro da mesma classe no php5?

 

isso não está dando certo... mas seria algo do tipo:

PHP [/tr][tr]

class Teste {

 

private nome;

 

function Teste() {

}

 

function Teste($nomeVar) {

$this->nome = $nomeVar;

}

 

}

[/tr]

 

em Java só mudariamos a sintaxe, pois o princípio é o mesmo do código... e em PHP5?!?!?

 

 

valeeeeeu xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse tipo de sobrecarga é útil em Java porque ele é "Static Typed"!! Mas PHP é "Dinamic Typed" tu não precisa dizer que tipo de dados vai retornar a função nem o tipo de dado que ela vai receber!! Resumindo: Não existe sobrecarga (não da maneira que um programador C++/Java vê sobrecarga) em PHP.

 

Duas coisas:

1) Em PHP5 existe um método especial chamado __construct() que serve como construtor da classe;

2) Pra fazer o que tu queres, um método onde o parametro é obrigatório e outro que não, tu podes dar um valor inicial para o parametro e testar no corpo do teu método:

PHP [/tr][tr]<?php

class Teste {

private $nome;

 

public function __construct ($nome = "")

{

if ($nome != "") $this->nome = $nome;

}

}

?>

[/tr]

 

Caso tu precise saber se o parametro é um inteiro ou um float, por exemplo, tu podes utilizar as funções is_int(), is_float(), is_object(),....

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas tem um problema....

 

eu tenho esse construtor agora:

PHP [/tr][tr]

function __construct($sqlName, $bhm=false, $xmlFile = NULL, $banco="fotolog", $usuario="root", $password="", $host="localhost")

 

// e queria sobrecarregar assim:

 

function __construct($sql, $banco="fotolog", $usuario="root", $password="", $host="localhost")

[/tr]

 

 

tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse antes, tu não pode sobrecarregar, mas dentro do método tu podes fazer testes e apartir dele decidir como utilizar os parametros.

Do modo que tu queres tu podes utilizar as funções func_get_args() e func_num_args() e adaptar o __construct() para funcionar da meneira que tu queres dependendo do numero de parametros passados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um recurso de linguagens tipadas para que um método possa, por exemplo, aceitar como parametro um inteiro ou um float, ou seja, possa aceitar numeros diferentes de parametros ou parametros de tipos diferentes.Em PHP esse conceito trata de poder manipular a chamada a um método/propriedade que não foi declarado.Veja as funções __get(), __set() e __call no PHP5 e a função __overload() em PHP4

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.