0 votos
por (20 puntos) en PHP

Hola gente

Me gustaría saber cómo puedo utilizar una variable private dentro de un método static. Les dejo un resumen de la parte de código en la que tengo dudas (Última función):

<?php
 
    class Compra_vehiculo{
        
        private $precio_base;
        
        private static $ayuda=0;
        
                
        function Compra_vehiculo($gama){
            
            if($gama=="urbano"){
                
                    $this->precio_base=10000;
                
            }else if($gama=="compacto"){
                
                
                    $this->precio_base=20000;   
                
            }
            
            else if($gama=="berlina"){
                
                    $this->precio_base=30000;   
                
            }       
            
            
        }// fin constructor
        
        function climatizador(){        
            
            
                $this->precio_base+=2000;                   
            
            
        }// fin climatizador
        
        
        function navegador_gps(){
            
            $this->precio_base+=2500;   
            
        }//fin navegador gps
        
        
        
        function tapiceria_cuero($color){
            
            if($color=="blanco"){
            
                $this->precio_base+=3000;
            }
            
            else if($color=="beige"){
                
                $this->precio_base+=3500;
                
            }
            
            else{
                
                $this->precio_base+=5000;
                
            }
            
        }// fin tapicería
        
        
        
        function precio_final(){
            
            $valor_final=$this->precio_base-self::$ayuda;
            
            return $valor_final;    
            
        }// fin precio final
        
        static function descuento(){
 
            if($valor_final>26000){
 
                self::$ayuda=4500;
            }
        }
        
    }// fin clase

?>

1 Respuesta

0 votos
por (1.8k puntos)

Hola Isma:

  Me parece que tienes un problema conceptual. Los métodos estáticos no actúan sobre ningún objeto en particular, por lo tanto, no es posible acceder a una variable privada (salvo que sea estática también).

  En tu ejemplo, la variable $valor_final sería local del método estático descuento.

  Deberías pensar los métodos estáticos como métodos de clase y los no estáticos como de instancia.

  Consultame si te quedan dudas ;)

Preguntas relacionadas

0 votos
1 respuesta
preguntado por Drommeth (60 puntos) Abr 4, 2016 en PHP
0 votos
1 respuesta
preguntado por Diego_Diaz (20 puntos) Ago 8, 2016 en PHP
0 votos
1 respuesta
preguntado por lozadav (20 puntos) Ene 28, 2016 en PHP
0 votos
0 respuestas
0 votos
0 respuestas
preguntado por Carmona (40 puntos) Mar 20, 2020 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...