¿Funciona el amigo de soporte php como lo hace C++?función de amigo en php?
5
A
Respuesta
6
Lo más probable es que se refiera al alcance de clase/variable. En php, tiene:
- pública
- privada
- protegida
Pero no friend
visibilidad. El protected
aunque se usa cuando los miembros de un objeto deben hacerse visibles solo a otros objetos que se extienden/heredan.
Más información:
3
No. Tienes que declararlo público.
2
PHP no soporta ningún amigo declaraciones similares. Es posible simular esto usando los métodos __get y __set de PHP5 e inspeccionando una traza inversa solo para las clases de amigos permitidas, aunque el código para hacerlo es un poco torpe.
Hay algunos ejemplos de código y la discusión sobre el tema en el sitio de PHP:
HasFriends clase { privadas $ __ amigos = array ('MyFriend', 'OtherFriend');
public function __get($key)
{
$trace = debug_backtrace();
if(isset($trace[1]['class']) && in_array($trace[1]['class'], $this->__friends)) {
return $this->$key;
}
// normal __get() code here
trigger_error('Cannot access private property ' . __CLASS__ . '::$' . $key, E_USER_ERROR);
}
public function __set($key, $value)
{
$trace = debug_backtrace();
if(isset($trace[1]['class']) && in_array($trace[1]['class'], $this->__friends)) {
return $this->$key = $value;
}
// normal __set() code here
trigger_error('Cannot access private property ' . __CLASS__ . '::$' . $key, E_USER_ERROR);
}
}
Cuestiones relacionadas
- 1. PHP equivalente de amigo o interno
- 2. Funciones de amigo en C++
- 3. amigo función de acceso definido en la clase
- 4. función de amigo en clase derivada con herencia privada
- 5. Función de amigo de plantilla de una clase de plantilla
- 6. Modelando relaciones de amigo de amigo en MongoDB
- 7. amigo clase función dentro de un espacio de nombres
- 8. declaración de amigo declara una función sin plantilla
- 9. sobrecarga del operador (función de amigo y miembro)
- 10. C++ función de amigo - sobrecarga del operador istream >>
- 11. Clases de "amigo" en python
- 12. Visualizar el gráfico de Amigo de un amigo (foaf)
- 13. Plantilla amigo
- 14. ¿Por qué no podemos sobrecargar "=" usando la función amigo?
- 15. ¿Por qué la función de miembro amigo no se reconoce como plantilla de función automáticamente?
- 16. Amigo de la plantilla
- 17. ADL y amigo inyección
- 18. ¿Operadores de sobrecarga como función miembro o función no miembro (amigo)?
- 19. Cuándo utilizar la clase amigo en C++
- 20. Clase de amigo sin usar en C++
- 21. Parámetro de plantilla como amigo
- 22. clases amigo recursivas
- 23. PHP función de desvinculación
- 24. C++: Función amigo en una clase de plantilla para el operador <<
- 25. Función PHP crypt() en .Net?
- 26. Convirtiendo la función de Javascript en una función de PHP
- 27. ¿Esta función existe en PHP?
- 28. subrayado en la función php
- 29. ¿Especifica una función de miembro de clase como amigo de otra clase?
- 30. Tiempo de espera una función en PHP
Parece que no es así: http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=friend+function+php e incluso Wikipedia no parece mencionarlo: http://en.wikipedia.org/wiki/Friend_function – fabrik
no encuentra amigo, pero C++ es compatible con la clase de amigo o la función \ –
posible duplicado de [PHP equivalente de amigo o interno] (http://stackoverflow.com/questions/317835/php-equivalent-of-friend-or-internal) –