Foros del Web » Programando para Internet » PHP »

Lo prometido es deuda.

Estas en el tema de Lo prometido es deuda. en el foro de PHP en Foros del Web. Como lo prometido es deuda.... Código PHP: require_once( './../PhpLib/UtilitatLib.php' ); class  MailLib {     var  $Assumpte ;     var  $Msg ;     var  $Cabeceras ;     var  $EmailResposta ; ...
  #1 (permalink)  
Antiguo 11/02/2003, 02:32
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 9 meses
Puntos: 0
Lo prometido es deuda.

Como lo prometido es deuda....

Código PHP:
require_once('./../PhpLib/UtilitatLib.php');

class 
MailLib{
    var 
$Assumpte;
    var 
$Msg;
    var 
$Cabeceras;
    var 
$EmailResposta;
    var 
$Email;
    var 
$Util;
    
    function 
MailLib(){
        
$this -> Assumpte "";
        
$this -> Msg "";
        
$this -> Cabeceras "";    
        
$this -> Util = new UtilitatLib;
    }
    
    function 
SendMail($Email$EmailResposta$Assumpte ""$Msg ""){
        
$this -> Email $Email;
        
$this -> EmailResposta $EmailResposta;
        
$this -> Assumpte $Assumpte;
        
$this -> Msg $Msg
        
//Tractament del Missatge.
        
$this -> Msg $Util -> TractarEmailText($Msg);    
        
        
//Construcció de la capçalera.
        
$this->Cabeceras MailLib::Cabeceras();    
        
mail($Email$this->Assupmte$this->Msg$this->Cabeceras);
    }
    
    function 
Cabeceras(){
        
//Codificació per enviar mail
        //Cabecera anomenada abans com a Altres
        //Declaració variable
        
$Cabeceras ="";
        
$Cabeceras.="FROM:".$this->EmailResposta."\nX-Mailer: PHP\n";
        
$Cabeceras.="MIME-version: 1.0\n";
        
//<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>

        
$Cabeceras.="Content-Type: text/html; \n ";
        
//$Cabeceras.="Content-type:\" text/html;\"\n ";
        
$Cabeceras.="Content-transfer-encoding: 64BIT\n"
        return 
$Cabeceras;
    }

Siento que los comentarios esten en catalan.

Saludos
  #2 (permalink)  
Antiguo 11/02/2003, 03:11
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años
Puntos: 5
Muchas gracias por compartir con nosortros tu clase, que te parece si la pones en las FAQS?¿
__________________
Usuario registrado de Linux #288725
  #3 (permalink)  
Antiguo 11/02/2003, 08:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Tambien estaría bueno q pusieras un ejemplo (por muy obvio q te parezca a ti los métodos q usas .. ya q no estan documentados .. habrá q verlo en un ejemplo de uso .. incluido instanciar el objeto ..)

Te faltó poner el código de la classe:
require_once('./../PhpLib/UtilitatLib.php');
(O bien indicar a que pertenece .. para conseguirla )

Con una demo de uso y aclarado si ese UtilitatLib.php es requerido o no .. te invito a que lo pongas en las FAQ's (con una explicación breve de lo q es y lo q hace ..(sigue el formato de las FAQ's restantes si lo haces please ..)

Un saludo,
  #4 (permalink)  
Antiguo 11/02/2003, 15:09
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Aparte de lo que ya ha comentado Cluster (lo de la libreria), me gustaria comentar un par de cosas sobre la programacion.

La primera de ellas es sobre esta linea:
Código PHP:
$this->Cabeceras MailLib::Cabeceras(); 
Con esto siempre colocas las cabeceras de la clase MailLib, aunque hayas creado una clase hija MiMailLib. Con esto obligas a que si quieres mandar otras cabeceras o redefines la funcion SendMail() en la clase hija o modificas la funcion Cabeceras en la clase MailLib. Yo creo que seria mejor hacer
Código PHP:
$this->Cabeceras $this->Cabeceras(); 
aunque no se si con esto se volvera loco PHP ya que la funcion y la variable se llaman igual. Con esto se llama a la funcion Cabecera del objeto. Si no se redefine para una clase hija, se llama a la del padre. Y si se redefine, dentro de la redefinida se puede llamar a la del padre si la necesitas.

Lo segundo es sobre el atributo $Util. ¿Es obligatorio crearle como atributo? ¿No seria mejor crearlo como variable local dentro de SendMail? ¿O si es posible, llamar al funcion directamente con UtilitatLib:: -> TractarEmailText($Msg);? Como no conozco como es la clase UtilitatLib, no se si esas opciones son posibles.

Por ultimo comentar de que llevo poco tiempo peleandome con las clases en PHP. Casi todo mi conocimiento de los objetos vienen de la teoria y de C++ y algo de Java. Asi que espero que seais comprensivos si algo de lo que he dicho es una autentica burrada.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 11/02/2003, 17:08
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 9 meses
Puntos: 0
Holas

Primero, la redefinición de clases mediante la herencia, yo lo he intentado y he fracasado, no se como se hace en php se que en c++ se debe especificar con la palabra clave virtual, pero en php ni idea, porque si no especificas nada, el servidor no sabe a que método te refieres al de la clase hija o al de la padre. (Por cierto si alguien lo sabe seria de gran interés.)

Segundo.
Tanto la primera como la segunda definición creo que son equivalentes (CREO no es del todo seguro).

$this->Cabeceras = MailLib::Cabeceras();

$this->Cabeceras = $this->Cabeceras();

Tercero.
La utilización de la clase UtilitatLib es únicamente para hacer retoques de caracteres que pueden aparecer como estraños. Por ejemplo el apostrofe ( ' ), cuando se envia por email aparece (\') lo único que hace es un str_replace('\'', ''');
  #6 (permalink)  
Antiguo 11/02/2003, 19:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Tercero.
La utilización de la clase UtilitatLib es únicamente para hacer retoques de caracteres que pueden aparecer como estraños. Por ejemplo el apostrofe ( ' ), cuando se envia por email aparece (\') lo único que hace es un str_replace('\'', ''');
Ok, Ok .. pero si la usas .. pon el código correspondiente a esa classe ..

Y .. please . Un ejemplo completo de uso + descripcion genérica seria lo ideal .. Sobre todo para la FAQ's q pusistes (puedes editar tus propios mensajes) .. Sino, la verdad q no tiene mucha utilidad (y mas para los q no dominan mucho OOP en PHP ...)

En php tienes una normativa para documentar los Objetos .. Segun las especificaciones de 'PEAR'

Pear
http://pear.php.net

Y para ayudarte a documentar tus classes de forma semi-automática puedes ayudarte de:

phpDocumentor
http://phpdocu.sourceforge.net/

Sería bueno q las documentases así .. siguiendo algun extandar ..

Un saludo,
  #7 (permalink)  
Antiguo 11/02/2003, 21:29
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 23 años, 1 mes
Puntos: 6
Cita:
Segundo.
Tanto la primera como la segunda definición creo que son equivalentes (CREO no es del todo seguro).
$this->Cabeceras = MailLib::Cabeceras();
$this->Cabeceras = $this->Cabeceras();
Como comento por hay josemi el uso que le estas dando al operador ::, no es el adecuado a un cuando paresca lo mismo. La idea de ese operador es parecido a lo que en java llaman metodos estaticos los cuales no necesitan un instancia de la clase par aser accedidos. La restriccion en PHP es que un llamado de esa naturaleza solo llama al metodo no hay objeto durante el llamado de la funcion, ni variables. solo las locales y las globales del objeto que hace la llamada. Y bueno el que puedas hacerlo es por la flexibilidad que tiene php, pero a nivel de diseño como lo comento josemi no es del todo correcto.
El operdor :: es usado generalmente cuando hay necesidad de enviar mensajes entre objetos (aparte de la de hacer llamadas a metodos de una clase padre). Pero en el cual ninguno de los objetos controla la instancia de los otros. Es decir queremos comuncar de alguna forma ambos objetos.

Ejemplo:
Código PHP:
class {

       function 
html_entities$html_text )
      {
           return 
htmlentities$html_text ); 
      }
}

class 
B{

       function 
mostrar$text )
       {
            
$text :: html_entities$text );
            echo 
$text;
       }
}

$obj = &new B;
$obj ->mostrar"algo con html"); 
Como podemos observar la clase B se encarga de mandar un mensaje a la clase A para convertir el texto a su equivalente en entidades de html para no ser interpretadas por el navegador antes de que se desplieguen los datos. Donde B es una clase de control que delega responsabilidad a la clase A. Es un ejemplo sencillo pero creo que sirve para aclarar el uso del operador ::

Nota: Si la clase requiere hacer uso de un metodo de la clase padre se puede usar el operador parent
  #8 (permalink)  
Antiguo 12/02/2003, 03:07
 
Fecha de Ingreso: febrero-2003
Mensajes: 9
Antigüedad: 21 años, 9 meses
Puntos: 0
Puedes poner un ejemplo de como utilizar el parametro PARENT.

Un saludo.
  #9 (permalink)  
Antiguo 12/02/2003, 03:33
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 23 años
Puntos: 5
Código PHP:

parent
::metodo 
Parent se utiliza para referirse a metodos de la clase padre, por ejemplo seria clase padre con sus metodos (funciones) y para acceder a ellas usar parent:metodo.

Podeis revisar el manual de php.net para ello. JEJE pero prepararos para PHP5 que muchas cositas cambian
__________________
Usuario registrado de Linux #288725

Última edición por epplestun; 12/02/2003 a las 03:37
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:17.