> <?php
> class Practica{
>
> var $nom;
> var $ape;
>
> public function nombre($nombre, $apellido){
>
> $this->nom = $nombre;
> $this->ape = $apellido;
>
> return $this->muestra_nombre();
> }
>
> public function muestra_nombre(){
> return $this->nom." ".$this->ape;
> }
>
> }
> ?>
Agustín Quiroga
---------------------------
Web.Q
http://www.webq.com.ar
@AgusQuiroga
> --
> Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a php-arg+u...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-arg?hl=es.
>
<?php
class Practica {
private $nom;
private $ape;
public function nombre($nombre, $apellido) {
$this->nom = $nombre;
$this->ape = $apellido;
return muestra_nombre();
}
public function muestra_nombre(){
return $this->nom . " " . $this->ape;
}
}
?>
Yo agregaría que empieces a ver de migrar tus clases a PHP5-POO, es mucho más robusto, y podrás implementar correctamente conceptos, como encapsulamiento, herencia, polimorfismo y todo lo demás
<?php
class Practica {
private $nom;
private $ape;return muestra_nombre();
public function nombre($nombre, $apellido) {
$this->nom = $nombre;
$this->ape = $apellido;
}
public function muestra_nombre(){
return $this->nom . " " . $this->ape;
}
}?>
--
>
> En este caso nombre() es un setter y no debería llamar a otro método ya que
> no nos interesa imprimir en este punto, no tiene sentido hacer un echo
> $practica->nombre('Juan', 'Perez') si sólo estamos asignando valores a los
> atributos, desconozco la semántica de tu problema pero si la clase se
> llamara Persona usaría el método __toString():
>
> <?php
>
> class Persona
> {
> private $_nombre;
> private $_apellido;
>
> public function __construct($nombre, $apellido)
> {
> $this->_nombre = $nombre;
> $this->_apellido = $apellido;
> }
>
> public function __toString()
> {
> return $this->_nombre . ' ' . $this->_apellido;
> }
> }
>
>
> $persona = new Persona('Sergio', 'Rodríguez');
> echo $persona;
>
Esto es lo correcto.
Básicamente esta clase (que modela una entidad), seria
Persona
- nombre
- apellido
+ constructor
+ setters & getters
+ toString
el - (menos) es para evitar acceso, es decir, los atributos son
privados. El + (más) son accesos públicos, podrán encontrarlo como
métodos públicos o la interfaz de la clase, depende de la literatura.
También pueden copiarse de como lo hace un Java Boy.
un abrazo,
--
Gustavo C
| Agustín Quiroga | ||
![]() |
Web. www.webq.com.ar Twitter. @AgusQuiroga |
|
| Tel: +54.11.5368.7921 - Skype: WebQ_Online - Dir: Juncal 2622, 5to. C | ||
| Ciudad Autónoma de Buenos Aires, Argentina. | ||
| "Asesoramiento, desarrollo y soporte para proyectos y negocios en internet." | ||
return $this;
class Persona ()
{
private $_nombre;
private $_apellido;
public function setNombre ($nombre)
{$this->_nombre = $nombre;}
return $this;
public function setApellido ($apellido)
{$this->_apellido = $apellido;}
return $this;
public function __toString ()
{return $this->_nombre . " " $this->_apellido;}
}
<?php
$persona = new Persona();
$persona->setNombre("Alberto")->setApellido("Fernandez");
echo $persona;
Hablando de setters y getters, no hay que olvidar los metodos "magicos" __set() y __get().
Pueden ser muy utiles. A continuacion un ejemplo.
Se pueden usar para separar los atributos propios de lo que representa el objeto de atributos propios del objeto.
$persona = new Persona();
$persona->nombre = 'Juan';
$persona->apellido = 'Perez';
echo $persona->get_full_name(); // devuelve "Juan, Perez"
De esta forma, no es necesario definir multiples metodos setters o getters.
Tambien podrias tenerlos (el __set() y el __get()) en una clase
"padre" sobre la cual vos extendes.
Esto es muy comun en un ORM por ejemplo.
2011/7/20 Sergio Gabriel Rodriguez <sgrod...@gmail.com>:
On 7/21/11, cesar barcia <cesa...@gmail.com> wrote:
> Gente muchas muchas gracias a todos por sus ayudar y por ir un pocomas alla
> con sus respuesta mostrar algunas otras cosas tambien :) me a uedado mas
> claro y voy a empezar a estudiar sobre lo metodos
> magicos<http://php.net/manual/es/language.oop5.magic.php>..
>
> una ultima consulta que me queda colgada sobre la raiz de lo que fue la
> pregunta, siguiendo una clase similar estaria bien esta forma de llamar un
> metodo a dentro de otro:
>
>
> class Practica2{
>
> private $val1;
> private $val2;
>
> public function __construct($valor1, $valor2){
> $this->val1 = $valor1;
> $this->val2 = $valor2;
> }
> public function getV1(){
> return $this->val1;
> }
> public function getV2(){
> return $this->val2;
> }
> public function __toString(){
> return "el primer valor es: ".$this->getV1()." y el segundo:
> ".$this->getV2();
> }
>
>
> }
>
> $p2 = new Practica2(2, 5);
> echo $p2;
>
>
> Que les parece es la forma de llamar al valor de un metodo de una clase para
> usarlo en otro metodo?
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP
> Argentina" de Grupos de Google.
> Para ver este debate en la Web, visita
> https://groups.google.com/d/msg/php-arg/-/_k6WP8PXqPcJ.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> php...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> php-arg+u...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/php-arg?hl=es.
>
>