Miré el manual , pero parece que no puedo encontrar la respuesta.
¿Cuál es la visibilidad predeterminada en PHP para métodos sin una declaración de visibilidad? ¿PHP tiene una visibilidad de paquete como en Java?
Por ejemplo, en el siguiente código, ¿es go()
público o privado?
class test {
function go() {
}
}
La razón por la que pregunté es que he visto muchos códigos de constructores escritos como function __construct()
y algunos como public function __construct()
. ¿Son equivalentes?
php
oop
visibility
Yada
fuente
fuente
El valor predeterminado es público. Es una buena práctica incluirlo siempre; sin embargo, PHP4 admite clases sin modificadores de acceso, por lo que es común ver que no se usan en el código heredado.
Y no, PHP no tiene visibilidad de paquetes, principalmente porque hasta hace poco PHP no tenía paquetes.
fuente
El valor predeterminado es público. La razón probablemente sea la compatibilidad con versiones anteriores, ya que el código antiguo espera que sea público (dejaría de funcionar si no fuera público).
fuente
Fuente
fuente
Cuando no se utilice una palabra clave de visibilidad (
public
,private
oprotected
), los métodos serán públicos . Pero no puede definir propiedades de esta manera. Para propiedades , deberá agregar una palabra clave de visibilidad en la declaración.Para las propiedades que no están declaradas en la clase y le asignas un valor dentro de un método, tendrán visibilidad pública.
fuente
function __construct()
ypublic function __construct()
funciona con el mismo nombre de método.Si no puede definir el prefijo para un nombre de método, debería ser público por defecto.
fuente