*   >> Lectura Educación Artículos >> science >> programación

Visibilidad en Php Classes

La visibilidad en las clases PHP Programación Orientada a Objetos en PHP - Parte 6 Introducción Esto es parte de mi serie 6, Programación Orientada a Objetos en PHP. Las palabras clave, público, protegido y privado pueden ser considerados como especificadores de acceso de clases PHP. En PHP, acceso especificador viene bajo el tema, la visibilidad. En esta parte de la serie explico visibilidad en clases PHP. Hemos visto a uno de los especificadores de acceso: público. En esta parte de la serie veremos los significados de los tres y sus aplicaciones.

Nota: Si no puede ver el código o si cree que falta algo (enlace roto, la imagen ausente), simplemente en contacto conmigo en [email protected]. Es decir, en contacto conmigo para el más mínimo problema que tenga acerca de lo que está leyendo. Estructura de Clase La estructura de una clase es el siguiente: class className {accessspecifier propiedad; ... Accessspecifier método {} ...} Un especificador de acceso es la palabra clave, público o protegido o privado. Cada miembro (propiedad o método) debe ir precedida de un especificador de acceso.

Si ningún especificador de acceso está allí (escrito) de un método, entonces el especificador de acceso predeterminado, supone para el método es público. Lo que accede a los Miembros de la Clase? Los miembros de una clase pueden acceder a otros miembros (propiedades y métodos) de la misma descripción de la clase. Funciones, operadores, declaraciones y otras clases (objetos) fuera de la descripción de la clase de una clase particular también pueden acceder a los miembros de esa clase, cuando la clase es un objeto.

Un especificador de acceso decide si es o no una función u operador o de clase, dentro o fuera de la descripción de clase puede tener acceso al miembro que controla dentro de su clase. El miembro controla un especificador de acceso es el miembro escrito junto a él en la descripción de clase. Voy a utilizar declaraciones, funciones y clases en las ilustraciones de acceso a los miembros de la clase. No voy a usar operadores para las ilustraciones. Me va a utilizar la frase, "función externa".

Esto se refiere a un método de función o clase que no es un miembro de la descripción de la clase en cuestión. También voy a usar la frase "declaración externa" por la misma razón. Cuando digo una función externa puede acceder a un miembro de la clase, me refiero a la función externa puede utilizar el nombre (variable de la propiedad o el nombre del método) del miembro como su argumento o como una variable dentro de su definición. El especificador de acceso público con el especificador de acceso público, una función externa puede tener acceso a los miembros públicos de la clase.

El siguiente código ilustra esto (leer la explicación más abajo): Clase Calculadora {$ num1 público; $ num2 público; función de complemento pública () {$ sum = $ this-> num1 + $ this-> num2; devolver $ suma; }} Function myFn ($ par) {return $ nominal; } $ Obj = new Calculadora (); $ obj-> num1 = 2; $ obj-> num2 = 3; $ resultado = $ obj-> add (); echo $ resultado. "$ MyVar = myFn ($ obj-> num1); echo $ myVar;> Hay una función en el código:? MyFn () Usted también tiene declaraciones que no son en cualquier función de la primera línea entre los estados libres instancia..

el objeto clase llamada, obj. Líneas 2 y 3 de los estados libres utilizar las propiedades de la clase como variables. Debido a que los miembros de la clase son públicos, los estados libres pueden acceder los miembros de la clase. Hemos visto cosas así antes, pero ahora, estoy usando ellos para explicar el especificador, público. La línea 4 de los estados libres también demuestra esto. En la línea 6 de los estados libres, la función, myFn () utiliza el num1 propiedad de la clase como argumento. Es podría hacerlo porque el miembro, num1 es pública en la clase.

El especificador de acceso privado con acceso especificador privada una función externa o una declaración externa no pueden acceder a los miembros privados de la clase. Con el especificador privada sólo un miembro de una descripción de la clase puede tener acceso al miembro privado de la descripción de la clase.

El siguiente código muestra cómo solamente un miembro de una clase puede acceder a un miembro privado de la clase (leer la explicación más abajo): Clase Calculadora {$ num1 privado; $ num2 privado; public function add () {$ this-> num1 = 2; $ this-> num2 = 3; $ sum = $ this-> num1 + $ this-> num2; devolver $ suma; }} $ Obj = new Calculadora (); $ resultado = $ obj-> add (); echo $ resultado; ?> La clase tiene dos miembros privados (propiedades) y uno de los miembros del público (método).

En la descripción de la clase, la definición del método add () utiliza los nombres de los miembros privados, como las variables (por ejemplo, $ this-> NUM1). Así que el método add (), un miembro de la descripción de la clase ha tenido acceso a los miembros privados de la descripción de la clase. La segunda línea de los estados libres fuera de la descripción de la clase ha sido capaz de acceder al método add () de la clase porque el método add () es público (tiene un especificador de acceso público).

El siguiente código no compilará porque la segunda declaración libre intenta acceder (uso como variable) un miembro privado de la clase: class Calculadora {$ num1 privado; $ num2 privado; public function add () {$ this-> num1; $ this-> num2 = 3; $ sum = $ this-> num1 + $ this-> num2; devolver $ suma; }} $ Obj = new Calculadora (); $ obj-> num1 = 2; $ resultado = $ obj-> add (); echo $ resultado; ?> La segunda línea entre los estados libres está mal porque intenta acceder (uso como variable) del miembro privado, num1.

El especificador de acceso protegidos Si un miembro de una clase es pública, se puede acceder a una función externa y la declaración externa y también una descripción de la clase derivada. Si un miembro de una clase es privado, no se puede acceder por una función externa o la declaración externa; incluso una clase derivada no puede acceder a ella.

La pregunta es, si una clase derivada no es realmente ser capaz de acceder a un miembro privado de su clase base (ya que la clase y la base de clase derivada están relacionados)? Bueno, para resolver este problema tiene otro especificador de acceso llamada, protegido. Si un miembro de una clase esté protegido, se puede acceder por una clase derivada, pero no se puede acceder por una función externa o la declaración externa. También se puede acceder por los miembros dentro de la descripción de clase (clase base).

El código siguiente muestra cómo una clase derivada puede acceder a un miembro protegido de una clase base: clase Calculadora {protected $ num1; protected $ num2; } Class ChildCalculator extiende Calculadora {public function add () {$ this-> num1 = 2; $ this-> num2 = 3; $ sum = $ this-> num1 + $ this-> num2; devolver $ suma; }} $ ChObj = new ChildCalculator (); $ resultado = $ chObj-> add (); echo $ resultado; ?> La clase base tiene sólo dos propiedades y ningún método; estas propiedades están protegidos. La clase derivada tiene un método y sin propiedad.

Dentro de la clase derivada, las propiedades protegidas de la clase base se utilizan como variables. Generalmente, cuando una clase derivada está utilizando un miembro de una clase base, que es un método de la clase derivada que está utilizando el miembro, como en este ejemplo. El código anterior es correcto.

El siguiente código no se compilará, porque la línea 2 entre las afirmaciones gratuitas intenta acceder a un miembro protegido de una clase (clase base): Clase Calculadora {protected $ num1; protected $ num2; } Class ChildCalculator extiende Calculadora {public function add () {$ this-> num1; $ this-> num2 = 3; $ sum = $ this-> num1 + $ this-> num2; devolver $ suma; }} $ Obj = new Calculadora (); $ obj-> num1 = 2; $ chObj = new ChildCalculator (); $ resultado = $ chObj-> add (); echo $ resultado; ?>

Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Lectura Educación Artículos,https://lectura.nmjjxx.com All rights reserved.