Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: . . . en 28 Enero 2010, 01:52 am



Título: Preguntas sobre PHP.
Publicado por: . . . en 28 Enero 2010, 01:52 am
Desearia que alquien me ayude con algunas dudas:

1) Sobre __construct
Código
  1. <?
  2. class Conexion
  3. {
  4. //Declaracion de variables
  5. private $_CONEXION;
  6.  
  7. //metodo constructor
  8. function __construct()
  9. {
  10. $conex = array('localhost','root','root','web');
  11. $this->_CONEXION = mysql_connect($conex[0],$conex[1],$conex[2]);
  12. mysql_select_db($conex[3],$this->_CONEXION);
  13. }
  14. }
  15. ?>

El constructor solo se ejecutara cuando instancie la clase conexion, que sucede si la clase conexion extiende a una clase personal (habra error porque el constructor no se ha ejecutado). ¿Como corregir esto?

2) Sobre active record

Lei por internet y me tope con esto:

Código
  1. $post = new Post();
  2. $post->title = 'My first blog post!!';
  3. $post->author_id = 5;
  4. $post->save();

y tambien

Código
  1. $post = new Post();
  2. $post->find(5);
  3. echo $post->title;
  4. echo $post->author_id = 5;

Entonces en active record usan la misma forma tanto para recuperar como para asignar un valor a un campo de una clase (que representa a la tabla). En .NET esto se podria hacer de la siguiente forma.

Código
  1.    Public Property title() As String
  2.        Get
  3.                return _titulo
  4.        End Get
  5.        Set(ByVal value As Integer)
  6.                _titulo = value
  7.        End Set
  8.    End Property

De esa forma se puede tanto asignar como recuperar un valor, sin embargo como se hace eso en PHP. Yo se que para recuperar se puede hacer de la siguiente forma:

Código
  1. public function title()
  2. {
  3. return $this->_title;
  4. }

Sin embargo para asignar se tiene que enviar un valor

Código
  1. public function title($titulo)
  2. {
  3. $this->_title = $titulo;
  4. }

La pregunta es: como hacer para que en php pueda asignar y recuperar un valor en un solo metodo (como se hace en .NET)

Gracias.

EDITO: Al parecer el uso de Setters y Getters aumenta la velocidad de la aplicacion. Source (http://www.forosdelweb.com/f68/properties-php-606189/)


Título: Re: Preguntas sobre PHP.
Publicado por: Nakp en 28 Enero 2010, 02:17 am
title es un solo metodo... polimorfico :P usa ambos y funcionaran ;)


Título: Re: Preguntas sobre PHP.
Publicado por: . . . en 28 Enero 2010, 02:25 am
La solucion a mi segundo problema es esta:

Código
  1. class Bar{
  2.  
  3.    private $name;
  4.    private $age;
  5.  
  6.    public function __set($var, $val){
  7.        $this->$var = $val;
  8.    }
  9.  
  10.    public function __get($var){
  11.        return $this->$var;
  12.    }
  13.  
  14. }

Y asi se usa:

Código
  1. $bar = new Bar();
  2. $bar->name = "Dougal";
  3. $bar->age = 10;