Foros del Web » Programando para Internet » PHP » CodeIgniter »

metodos privados en codeigniter

Estas en el tema de metodos privados en codeigniter en el foro de CodeIgniter en Foros del Web. hola todo bien, como muchos saben, en codeigniter se ve bastante php5 lo que es orientado a objetos , y los controladores son clases, entonces ...
  #1 (permalink)  
Antiguo 24/11/2012, 21:28
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 13 años, 10 meses
Puntos: 5
metodos privados en codeigniter

hola todo bien, como muchos saben, en codeigniter se ve bastante php5 lo que es orientado a objetos , y los controladores son clases, entonces tienen metodos, etc,

bueno la duda , que tengo , es sobre los metodos privados.
estos no se pueden acceder directamente, si lo vemos en programacion , sin codeigniter,..


por ejemplo instacio un objeto, quiero acceder a ese metodos, privado , que estara definido como

private function hola(){}

NO VOY A PODER ACCEDER...

en codeigniter, no se coloca "private" pero se coloca, "guion bajo" antes de la funcion....

por ejemplo seria

function _hola(){
afsdfsdfsdf
}

bueno sucede, que no me restringe... EN CODEIGNITER

mi clase es cart... y tengo asi, que en la


Código PHP:
          function insertar(){
        
$this->cart_model->subir();
        
// redirect('cart');
                
$this->_cart_enviado();
    }



       function  
_cart_enviado(){

           echo 
"hola";

       } 


si coloco en la url, asi...

ejemplo/cart/insertar/


funciona como tiene que ser, LA UNICA MANERA DE EJECUTAR"_cart_enviado" es por la funcion insertar,


pero si coloco, en la URL.. asi ...


ejemplo/cart/insertar/_cart_enviado

SI PUEDO VER...

-------------------------------------------------

si pongo asi.

http://localhost/ejemplo/cart/_cart_enviado

tira error...

--------------------------------------------------
la idea es que por url no pueda acceder a el private...
pero pareciera como que si se puede. si se, la ruta al menos,,
si se puede entonces,,, no? o me equivoco,,,,
  #2 (permalink)  
Antiguo 24/11/2012, 22:53
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: metodos privados en codeigniter

estas un poco mal, codeigniter no tiene su propio sistema POO, si tu haces este método
Código PHP:
Ver original
  1. function _accion(){
  2.     echo "Hola";
  3. }

no es privado, solamente no se puede acceder desde la URL.
Para hacerla privada, tienes que usar la palabra reservada de PHP private antes de la definicion del método.
Código PHP:
Ver original
  1. private function _accion(){
  2.     echo "Hola";
  3. }
Y como te comentaba, codeigniter no tiene su sistema de POO es meramente PHP

Saludos
  #3 (permalink)  
Antiguo 25/11/2012, 05:12
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: metodos privados en codeigniter

El underscore no hace a un método private, es solamente una convención a la hora de nombrar los métodos que se utilizaba(tiempo pasado) para protected/private y ten en cuenta que para PHP si no esta declarada la visibilidad esta es publica.

Si quieres que un método/propiedad sea private o protected debes indicarlo explícitamente y bueno si quieres aprender buen OOP directamente utiliza otro fw, CI no es buen ejemplo de nada.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 25/11/2012, 12:42
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: metodos privados en codeigniter

Cita:
Iniciado por vani18 Ver Mensaje
hola todo bien, como muchos saben, en codeigniter se ve bastante php5 lo que es orientado a objetos , y los controladores son clases, entonces tienen metodos, etc,

bueno la duda , que tengo , es sobre los metodos privados.
estos no se pueden acceder directamente, si lo vemos en programacion , sin codeigniter,..


por ejemplo instacio un objeto, quiero acceder a ese metodos, privado , que estara definido como

private function hola(){}

NO VOY A PODER ACCEDER...

en codeigniter, no se coloca "private" pero se coloca, "guion bajo" antes de la funcion....

por ejemplo seria

function _hola(){
afsdfsdfsdf
}

bueno sucede, que no me restringe... EN CODEIGNITER

mi clase es cart... y tengo asi, que en la


Código PHP:
          function insertar(){
        
$this->cart_model->subir();
        
// redirect('cart');
                
$this->_cart_enviado();
    }



       function  
_cart_enviado(){

           echo 
"hola";

       } 


si coloco en la url, asi...

ejemplo/cart/insertar/


funciona como tiene que ser, LA UNICA MANERA DE EJECUTAR"_cart_enviado" es por la funcion insertar,


pero si coloco, en la URL.. asi ...


ejemplo/cart/insertar/_cart_enviado

SI PUEDO VER...

-------------------------------------------------

si pongo asi.

http://localhost/ejemplo/cart/_cart_enviado

tira error...

--------------------------------------------------
la idea es que por url no pueda acceder a el private...
pero pareciera como que si se puede. si se, la ruta al menos,,
si se puede entonces,,, no? o me equivoco,,,,

Si usas un poco la lógica te darás cuenta de que la accion insertar se esta ejecutando correctamente imprime y finaliza el script.

ejemplo/cart/insertar/_cart_enviado (ejecuta la accion insertar y fin, _cart_enviado lo estaria tomando como un parámetro)

http://localhost/ejemplo/cart/_cart_enviado (Es tal como debe ser, error, ya que la accion o metodo en "teoria" segun CI la estas haciendo privada que es solo un juego de palabras por que simplemente no la hace accesible por URL)

Como te recomendaron mas arriba, CI es bastame amigable para entender los conceptos básicos, pero también te sugiero empezar a practicar con otro Framework, he oido buenas referencias sobre Laravel, yo uso YII, y estoy empezando a ver Symfony.

Saludos
__________________
Drupal Argentina

Etiquetas: clase, metodos, php, privados
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 09:57.