Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

pequeña duda

Estas en el tema de pequeña duda en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola, rapidin, creo una funcion como la siguiente function iamafunction($value='default', $value2,$value3){} si se fijan el primer parametro tiene un valor por defecto en caso que ...
  #1 (permalink)  
Antiguo 14/01/2009, 08:03
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Pregunta pequeña duda

hola, rapidin, creo una funcion como la siguiente

function iamafunction($value='default', $value2,$value3){}

si se fijan el primer parametro tiene un valor por defecto en caso que no se pase y al parecer php no me deja llamar a la funcion de esta forma:

iamafunction(,$value2,$value3);

es decir, si voy a declarar valores por defecto en una funcion, estos deben ir al final...mi pregunta es un poco tonta, es asi? o yo no se ni lo que hablo y si que hay una manera de hacerlo??
  #2 (permalink)  
Antiguo 14/01/2009, 08:08
Avatar de leeja  
Fecha de Ingreso: octubre-2005
Mensajes: 82
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: pequeña duda

pon los parametros opcionales al final
__________________
www.datasegura.net
  #3 (permalink)  
Antiguo 14/01/2009, 08:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: pequeña duda

si, tienes razón.... osea, usa tu razonamiento!

de hecho, los argumentos opcionales deben ir al ultimo...

los importantes, de izquierda a derecha... en orden de relevancia, no mas, ¿listo??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 14/01/2009, 08:52
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
yaaa, una lastima :s, tendre que pensar mas xD jejeje, nada explico, es que llevo un tiempo trabajando con xml en php y hasta hoy creaba una funcion por cada cosa que queria hacer con xml y de pronto digo: mierda >< por que no hago una clase y ya esta? y en eso estoy, les dejo lo unico que he hecho, esta pensada mas bien para llevar una sencilla galeria de fotos en xml pero se me han ocurrido muchas mas cosas que se le puede agregar, pero weno, por ahora es lo que hay ;)
Código PHP:
<?php

/**
 * @author anler
 * @copyleft 2009
 */

class XMLimg{
    private 
$images;
    private 
$xml;
    private 
$path;
    
    public function 
create($path 'untitled.xml'$root 'images'$override true$version '1.0'){
        if(
file_exists($path) && !$override)
            return -
1;
        try{
            if(!
$this->xml domxml_new_doc($version))
                throw new 
Exception('Could not create/override the file.');
            
$this->xml->append_child(new DOMElement($root));
            
$this->path $path;
        }catch(
exception $e){
            echo 
$e->getMessage();    
        }
    }
    
    public function 
open($path){
        try{
            if(!
$this->xml domxml_open_file($path))
                throw new 
Exception('Could not open the file.');
        }catch(
exception $e){
            echo 
$e->getMessage();
        }
    }
    
    public function 
add($_element 'image'){
        
$root $this->xml->document_element();
        
$num_args func_num_args();
        
$element = new DOMElement($_element);
        for(
$i 1$i < (($num_args%2)?$num_args-1:$num_args); $i+=2){
            
$attr func_get_arg($i);
            
$value func_get_arg($i+1);
            
$element->set_attribute($attr$value);
        }
        
$root->append_child($element);
    }
    
    public function 
delete(){
        
    }
    
    public function 
save_as($name 'untitled.xml'){
        try{
            if(!
$this->xml->dump_file($nametruefalse))
                throw new 
Exception('No se puede guardar el archivo.');
        }catch(
exception $e){
            echo 
$e->getMessage();
        }
    }
    
    public function 
save(){
        try{
            if(
$this->xml && !$this->xml->dump_file($this->pathtruefalse))
                throw new 
Exception('No se puede guardar el archivo.');
            else
                return -
1;
        }catch(
exception $e){
            echo 
$e->getMessage();
        }
    }
}
y el tema de los parametros opcionales es porque si pudiese llamar asi al metodo XMLimg::add(,"url", "imagen.jpg", "descripcion", "esta es la descripcion de la imagen")
seria muy sencillo y no obligaria a poner un nombre de etiqueta para cada nueva imagen en el xml (pues seria <image /> por defecto) porque no quiero 'ensuciar' mas el metodo para saber si el ultimo parametro que me pasan es el nombre de la etiqueta

la parte del for salio un poco jodida, pal que le interese es esto
for($i = 1; $i < (($num_args%2)?$num_args-1:$num_args); $i+=2)

Última edición por GatorV; 14/01/2009 a las 10:50
  #5 (permalink)  
Antiguo 14/01/2009, 10:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: pequeña duda

Mmm pero si tu clase es XMLimg, es para imagenes no? Si aceptas otro tipo de "elementos", entonces cambia la firma de tu clase a un XML generico.

Creo tu problema mas de sintaxis es de Diseño de tu clase, recuerda que cada clase tiene un proposito, y debes de abstraer ese proposito, a lo mejor crea una clase padre que tenga un método add() que pueda agregar cualquier nodo.

Luego creas nodos "hijos" XMLimg, XMLa, etc. y estos los pasas al XML "padre".

Saludos.

Tema trasladado a PHP Orientado a Objetos.
  #6 (permalink)  
Antiguo 14/01/2009, 11:49
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: pequeña duda

si si, eso mismo, lo que pasa es que nada, me puse a hacer esta clase para imagenes solo, pero a medida que la hacia me da por generalizarla mas y mas y eso, cuando hacia el metodo add() pense, y si quiero ponerle otro nombre a la etiqueta? y con los atributos igual, si quiero agregarle mas atributos de los predeterminados? y se me ha ido un poco de las manos :s, al final tendre que cambiarla ;)
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 03:13.