Comunidad PHPeros

Lenguajes => PHP => (POO) Programación Orientada a Objetos => Mensaje iniciado por: Siquillote en 19 de Mayo de 2010, 12:51:42 pm

Título: [DUDA] Error al llamar una clase
Publicado por: Siquillote en 19 de Mayo de 2010, 12:51:42 pm

Hola, pues empezando a estudiar POO, quería obtener un ejemplo claro y simple y me fijé en la firma de Focux que tenía un ejemplo. Pues intentando aprender, me lo estudié primero y luego lo intente hacer solito y claro, llega el problema. Lo hago y me sale error; me fijo en la firma de
Focux y en realidad todo está clavado solo que cambian los nombres.


<?
class miClase{
var $uno;
var $dos;
private function Siquillote() {
$this->uno="Numero 1";
$this->dos=" Y este el numero 2";
}}
?>
<?php
$todo = new miClase();
$todo-> Siquillote();
echo $todo->uno.$todo->dos;
?>


Entonces, al subirlo al servidor, me sale este error : Fatal error: Call to private method miClase::Siquillote() from context '' in /var/www/vhost/cpsiquillote.es/home/html/otro/numeros.php on line 19

¿Alguien me ayuda? :$
Título: Re:[DUDA] Error al llamar una clase
Publicado por: naveda en 19 de Mayo de 2010, 12:55:45 pm
La respuesta es obvia, no puedes llamar a funciones privadas desde fuera de la clase...

Para poder llamar a una funcion desde fuera tienes que definirla como public.
Título: Re:[DUDA] Error al llamar una clase
Publicado por: Siquillote en 19 de Mayo de 2010, 13:16:37 pm
La respuesta es obvia, no puedes llamar a funciones privadas desde fuera de la clase...

Para poder llamar a una funcion desde fuera tienes que definirla como public.

Si, es cierto ha sido un error garrafal mio. Focux lo tenía como public y no se como he llegado a poner private ¿La subsconciencia?  :confused:,
gracias Naveda :P
Título: Re:[DUDA] Error al llamar una clase
Publicado por: Focux en 19 de Mayo de 2010, 20:35:57 pm
Si, es cierto ha sido un error garrafal mio. Focux lo tenía como public y no se como he llegado a poner private ¿La subsconciencia?  :confused:,
gracias Naveda :P
Sucede que cuando pones la función privada sólo puedes acceder desde la misma clase. De paso gracias por intentar aprender con mi firma  :-[.
Título: Re:[DUDA] Error al llamar una clase
Publicado por: Siquillote en 19 de Mayo de 2010, 20:39:30 pm
Sucede que cuando pones la función privada sólo puedes acceder desde la misma clase. De paso gracias por intentar aprender con mi firma  :-[.

:confused:, de nada :P jajaja!

Lo que no llego a entender es como he puesto private si ni sabía que podía ponerse private  :confused:
Título: Re:[DUDA] Error al llamar una clase
Publicado por: Warlox en 19 de Mayo de 2010, 20:49:21 pm
Talvez como viste "public" tu subconsciente te quizo traicionar y te engañó a que pusieras public (?).
Naah es broma.

Como recomendación:

No hace falta el poner "public" antes de cada función pública, debido a que el navegador sobreentiende que el método es público y puede ser sacado de la clase.
Título: Re:[DUDA] Error al llamar una clase
Publicado por: Rodrinete en 19 de Mayo de 2010, 20:56:03 pm
Talvez como viste "public" tu subconsciente te quizo traicionar y te engañó a que pusieras public (?).
Naah es broma.

Como recomendación:

No hace falta el poner "public" antes de cada función pública, debido a que el navegador servidor sobreentiende que el método es público y puede ser sacado de la clase.
No te olvides que PHP es un lenguaje server-side, es decir, lo procesa el servidor y devuelve el contenido al cliente que lo interpretara el navegador.

No confundir servidor con navegador :P

Título: Re:[DUDA] Error al llamar una clase
Publicado por: Warlox en 21 de Mayo de 2010, 14:40:29 pm
Ups, se me fué xD
Título: Re:[DUDA] Error al llamar una clase
Publicado por: Physlet en 21 de Mayo de 2010, 20:01:23 pm
Como recomendación:
No hace falta el poner "public" antes de cada función pública, debido a que el servidor sobreentiende que el método es público y puede ser sacado de la clase.
Yo pienso que independientemente de si el servidor lo reconozca como público al no colocar modo de acceso, debería colocarse... No sé, yo por mi parte prefiero hacerlo así, sobre todo porque cuando necesite aplicar otros lenguajes como Java o C++, no me pase que por ejemplo en C++ al no colocar nada, lo reconozca como privado (eso me han comentado), a diferencia de Java que también lo reconoce como público y de esta manera no confundirme jeje...
Título: Re:[DUDA] Error al llamar una clase
Publicado por: CarlosRdrz en 22 de Mayo de 2010, 11:13:30 am
Lo mejor sin duda es especificarlo siempre, así se ayuda también a potenciar la lectura del código y te adaptas más al modo de programar de la comunidad PHP.

Hay una convención entre programadores PHP sobre como escribir el código para fomentar su lectura, compresión y demás. Entre muchisimas otras, esta es una de las cosas que se mencionan, el poner public aunque no sea necesario.

Por si alguien tiene curiosidad:
http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+(draft) (http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+(draft))

Saludos!