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

[SOLUCIONADO] Duda de php

Estas en el tema de Duda de php en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Tengo una duda y es cuando yo uso class y function: Código: <?php class php(){ private $variable; global $variable; protect $variable; function algo(){ } } ...
  #1 (permalink)  
Antiguo 05/05/2013, 05:59
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 2
Duda de php

Tengo una duda y es cuando yo uso class y function:

Código:
<?php
class php(){
    private $variable;
    global $variable;
    protect $variable;
    function algo(){

    }
}
?>
Para que sirve
private $variable;
global $variable;
protect $variable;
  #2 (permalink)  
Antiguo 05/05/2013, 06:49
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Duda de php

Cita:
Iniciado por XD2XD2 Ver Mensaje
Tengo una duda y es cuando yo uso class y function:

Código:
<?php
class php(){
    private $variable;
    global $variable;
    protect $variable;
    function algo(){

    }
}
?>
Para que sirve
private $variable;
global $variable;
protect $variable;
Son los difrentes tipos de acceso que puede tener la variable o el método (aunque en este ejemplo es la variable) y restringen donde se puede usar o no la misma.

Para que lo entiendas mejor mirate este tutorial que ellos lo pueden explicar mas a profundidad que yo.

http://www.phpya.com.ar/poo/
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 05/05/2013, 07:48
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: Duda de php

Voy por Modificadores de acceso a atributos y métodos (public - private) del tutorial, entonces private $variable; sirve para hacer esto:

<?php
class php(){
public $hola;
public function __construct($hola){
$this->hola = $hola;

}
public function hola(){
echo $this->hola;
}
}
?>

Pero yo podre quitando el public $hola; y funcionaba

Código:
<?php
class php(){
    public function __construct($hola){
        $this->hola = $hola;

    }
    public function hola(){
        echo $this->hola;
    }
}
?>
  #4 (permalink)  
Antiguo 05/05/2013, 08:11
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: Duda de php

Te sugiero que pases por la documentación de PHP, allí tienes lo que necesitas, de todas formas, cuando no se define visibilidad PHP le asigna public

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 05/05/2013, 08:20
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Duda de php

No esperes que en un foro se te pueda explicar como funcionan PPP ( public , private , protected ) aun que lo leas te llevara algo de tiempo para saber como y porque usar cada una de ellos.

Cita:
Pero yo podre quitando el public $hola; y funcionaba
Como dijo el colega si no le asignas la visibilidad se le asigna public. Otra cosa es que esto no se deberia de poder de hacer ( usar una variable que pertenece a la clase y no al metodo sin ser definida , pero eso son cosas de PHP )

Si quieres tener una variable que sea de la clase hay que difinir la y si es posible aclarar si es string , integer, array etc. aun que PHP no lo exige.

Código PHP:
<?php
class php(){
    
    public 
$hola ""//string
    
public $arr = array(); // array
    
public $integer 0// int

    
public function __construct($hola){
        
$this->hola $hola;

    }
    public function 
hola(){
        echo 
$this->hola;
    }
}
?>
Esto de que PHP te permite hacer una cosa no significa que se debe de hacer o que es correcta .
  #6 (permalink)  
Antiguo 05/05/2013, 09:05
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: Duda de php

Ok, ya lo entendi y muchisimas gracia. Creo que ya entendi el public private y protect.

Public, con public si puedes ponerlo en $variable -> funcion();
Private, con private no puedes, sirve para por ejemplo hacer esto:

<?php
class php(){
private $variable;
private function a(){
echo "Hola";
}

public function __construct(){
$this->variable->a();
}
}
?>

Protect: solo se puede utilizar en una class, si hago 2 clases, solo puedo utilizarla en la class que lo haya definido.
  #7 (permalink)  
Antiguo 05/05/2013, 09:41
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Duda de php

Cita:
Iniciado por XD2XD2 Ver Mensaje
Ok, ya lo entendi y muchisimas gracia. Creo que ya entendi el public private y protect.

Public, con public si puedes ponerlo en $variable -> funcion();
Private, con private no puedes, sirve para por ejemplo hacer esto:

<?php
class php(){
private $variable;
private function a(){
echo "Hola";
}

public function __construct(){
$this->variable->a();
}
}
?>

Protect: solo se puede utilizar en una class, si hago 2 clases, solo puedo utilizarla en la class que lo haya definido.
Lol No ...

http://php.net/manual/es/language.oop5.visibility.php
Cita:
La visibilidad de una propiedad o método se puede definir anteponiendo una de las palabras claves public, protected o private en la declaración. Miembros de clases declarados como public pueden ser accedidos de cualquier lado. Miembros declarados como protected, sólo de la clase misma, por herencia y clases parent. Aquellos definidos como private, únicamentede la clase que los definió.
Ejemplo de Public:

Código PHP:

<?php
class MyClass

    public 
$pageTitle "OOP PPP"// Visible por todos los sitios
    
private $pageName "PHP"// Visible SOLO en esta clase
    
protected $pageUrl "http://"// Visible solo en esta clase y las clases que le hereden
}

class 
SecondClass extends MyClass
{
    public function 
__construct()
    {
        echo 
$this->pageTitle "<br />"// Se ve
        
echo $this->pageName "<br />"// Notice: Undefined property: SecondClass::$pageName ( NO tienes acceso a esta variable )
        
echo $this->pageUrl "<br />"// se ve por que tiene de herencia a la clase MyClass
    
}
}

class 
OtherClass
{
    public function 
__construct()
    {
        
$mc = new MyClass();
        
        echo 
$mc->pageTitle "<br />"// Se ve
        
echo $mc->pageName "<br />"// Fatal error: Cannot access private property MyClass::$pageName ( NO tienes acceso a esta variable )
        
echo $mc->pageUrl "<br />"// Fatal error: Cannot access protected property MyClass::$pageUrl ( NO tienes acceso a esta variable )
    
}
}


?>
  #8 (permalink)  
Antiguo 05/05/2013, 09:46
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Duda de php

Cita:
Iniciado por XD2XD2 Ver Mensaje
Ok, ya lo entendi y muchisimas gracia. Creo que ya entendi el public private y protect.

Public, con public si puedes ponerlo en $variable -> funcion();
Private, con private no puedes, sirve para por ejemplo hacer esto:

<?php
class php(){
private $variable;
private function a(){
echo "Hola";
}

public function __construct(){
$this->variable->a();
}
}
?>

Protect: solo se puede utilizar en una class, si hago 2 clases, solo puedo utilizarla en la class que lo haya definido.
o.O
Otra cosa class php(){ las clases no se definen con () eso es incorrecto es asi class php{
$this->variable NO es una instancia de un objeto para que llame a() ( $this->variable->a(); ) eso esta mal.
O hacer $this->a(); o

Código PHP:
$this->variable $this;
$this->variable->a(); 
Lo que no tiene mucho sentido visto asi
  #9 (permalink)  
Antiguo 07/05/2013, 09:30
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: Duda de php

Que diferencia hay entre $mc = new MyClass(); y extends MyClass ¿?¿?¿?
  #10 (permalink)  
Antiguo 07/05/2013, 10:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Duda de php

Pues de entrada mucha, una crea una instancia y el segundo es un keyword que le indica al intérprete que la clase A extiende de la clase B.

Saludos.
  #11 (permalink)  
Antiguo 07/05/2013, 10:55
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: Duda de php

crea una instancia que es? que significa?
  #12 (permalink)  
Antiguo 07/05/2013, 11:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Duda de php

Deberías de aprender lo que es POO, ya que precisamente es de lo básico, si no aprendes con bases vas a estar lleno de dudas que fácil puedes mitigar si aprendes con bases.

Cuando tu defines una clase, es eso una definición de un objeto, pero no hace nada, ya que solamente es la definición, para que realmente interactues como el objeto, tienes que crear una instancia de ese objeto, eso lo haces con el keyword new, creas una nueva instancia de ese objeto para interactuar con sus propiedades o métodos.

Etiquetas: php
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:34.